個人學習編程(3-22) leetcode刷題

連續子數組:(難)

示例 1: 輸入: nums = [0,1]

輸出: 2

說明: [0, 1] 是具有相同數量 0 和 1 的最長連續子數組

示例 2:

輸入: nums = [0,1,0]

輸出: 2

說明: [0, 1] (或 [1, 0]) 是具有相同數量0和1的最長連續子數組。

?需要理解的知識:

//count0(i,j) = count0(0,j) - count0(0,i-1);

例如: count0(3,5) = count0(0,5)-count0(0,2);

#include <stdio.h>int cindex(int j){return j + 1;
}int findex(int j, int numsSize) {return j + numsSize;
}int findMaxLength(int* nums, int numsSize) {int countDiffSize = numsSize + 1;int countDiff[countDiffSize];countDiff[cindex(-1)] = 0;for (int k = 0; k < numsSize; k++){if (nums[k] == 0){countDiff[cindex(k)] = countDiff[cindex(k - 1)] + 1;}else{countDiff[cindex(k)] = countDiff[cindex(k - 1)] - 1;}}int findMaxJSize = 2 * numsSize + 1;int findMaxJ[findMaxJSize];for (int k = -numsSize; k < numsSize; k++){findMaxJ[findex(k, numsSize)] = -1;}for (int j = 0; j < numsSize; j++){findMaxJ[findex(countDiff[cindex(j)], numsSize)] = j;}int maxLength = 0;for (int i = 0; i < numsSize; i++){int target = countDiff[cindex(i-1)];int length = findMaxJ[findex(target, numsSize)] - i + 1;if (length > maxLength){maxLength = length;}}return maxLength;
}int main() {int nums1[] = {0, 1};int nums2[] = {0, 1, 0, 1};int nums3[] = {0, 1, 1, 0, 1, 0};int nums4[] = {1, 1, 1, 0, 0, 0};int nums5[] = {1, 0, 1, 1, 0};int nums6[] = {1, 1, 1};printf("Test 1: %d\n", findMaxLength(nums1, 2)); // Expected: 2printf("Test 2: %d\n", findMaxLength(nums2, 4)); // Expected: 4printf("Test 3: %d\n", findMaxLength(nums3, 6)); // Expected: 6printf("Test 4: %d\n", findMaxLength(nums4, 6)); // Expected: 6printf("Test 5: %d\n", findMaxLength(nums5, 5)); // Expected: 4printf("Test 6: %d\n", findMaxLength(nums6, 3)); // Expected: 0return 0;
}

今天晚上再看一遍把。難理解。。繞。。。

統計最大字符:

輸入:aaaabbbbbbbbbbbbbbccc
輸出:14 b

?C:

#include <stdio.h>
#include <string.h>
#define MAX_LEN 100int main() {char str [MAX_LEN];int count[26] = { 0 };int max_count = 0;char result_char;//輸入:fgets(str,MAX_LEN,stdin);//統計次數:for (int i = 0; str[i] != '\0'; i++){if (str[i] >= 'a' && str[i] <= 'z'){count[str[i] - 'a']++;} }//輸出:for (int i = 0; i < 26; i++){if (count[i] > max_count){max_count = count[i];result_char = 'a' + i;}else if (count[i] == max_count){if ('a' + i <result_char){result_char = 'a' + i;}   }}printf("%d %c",max_count,result_char);
}

C++:

C++還是好用一些,在sort排序之后,即使兩者的數量相同了,因為我們排序的原因,就可以使輸出的仍然是較小值的i

C語言輸入字符串

char s[100];

fgets(s,100,stdin);

但是C++輸入一個字符串:

// 讀取輸入 cout << "Enter a string: ";

getline(cin, s); // 使用 getline 讀取包含空格的字符串

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;string s; //輸入的字符串
int maxn = 0;
char ch = '\0';//初始化頻率最高的字符為'\0';void Max() {for (int i = 0; i < s.size(); i++){//利用 sort 計算字符 s[i] 在字符串中的出現次數int cnt = count(s.begin(),s.end(),s[i]);//保證先 sort() 再 Max() 這樣就不用判斷相等輸出最小值i了if (cnt > maxn){maxn = cnt;ch = s[i];}}
}int main() {//讀取輸入:cout << "Enter a string:~";getline(cin,s);sort(s.begin(),s.end());Max();cout << "character: "  << ch  << " frequency:" << maxn << "" << endl;
}

?出現次數超過一半的數:

給出一個含有n(0<n<= 1000)個整數的數組,請找出其中出現次數超過一半的數。數組中的數大于-50月小于50。

【輸入】
第一行包含一個整數n,表示數組大小;
第二行包含n個整數,分別是數組中的每個元素,相鄰兩個元素之間用單個空格隔開。

【輸入樣例】

1 2 2

【輸出樣例】

2

C++用count? if (count(a,a+n,a[i])>n/2) return true;

#include <bits/stdc++.h>
#include <iostream>
using namespace std;const int N = 1001;
int a[N], n;void Input(){cin >> n;for (int i = 0; i < n; i++){  // 這里應該是 i < n,避免讀取多余元素cin >> a[i];}
}void Output(){for (int i = 0; i < n; i++){  // 這里應該是 i < n,避免檢查多余元素if (count(a, a + n, a[i]) > n / 2){cout << a[i];return;}}cout << "0";
}int main() {Input();Output();return 0;
}

?明明的隨機數:

#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;const int N = 1001;
int arr[N];
int n;
void Input() {cin >> n;for (int i = 0; i < n; i++){cin >> arr[i];}return;
}void Output() {int index = unique(arr, arr + n) - arr;int cnt = index;cout << cnt << endl;for (int i = 0; i < cnt; i++){cout << arr[i] << ' ';}
}int main() {Input();sort(arr,arr + n);Output();
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74183.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

希爾排序

希爾排序是一種改進的插入排序算法&#xff0c;它通過將原始數據分成多個子序列來改善插入排序的性能&#xff0c;每個子序列的元素間隔為 d&#xff08;增量&#xff09;。隨著算法的進行&#xff0c;d 逐漸減小&#xff0c;最終減為 1&#xff0c;此時整個序列就被排序好了。…

JavaScript基礎-DOM事件流

在Web開發過程中&#xff0c;理解和掌握DOM事件流是實現高效交互的關鍵。DOM事件流描述了當一個事件發生時&#xff0c;它在文檔樹中的傳播路徑。了解事件流的概念有助于我們更精確地控制事件處理邏輯&#xff0c;避免不必要的行為&#xff0c;并提升用戶體驗。本文將深入探討D…

C語言基礎知識07---預編譯模塊化

目錄 預編譯指令 1.1 編譯流程 1.2 文件包含 1.3 條件編譯 1.4 宏定義 1.5 無參宏 1.6 typedef和無參宏的區別 1.7 有參宏 1.8 函數與有參宏的區別 1.9 取消宏定義 #undef 1.10 符合使用 模塊化操作 1.1 H文件&#xff1a;固定模版 1.2 C文件&#xff1a;源文件-…

自由學習記錄(46)

CG語法的數據類型 // uint : 無符號整數&#xff08;32位&#xff09; // int : 有符號整數&#xff08;32位&#xff09; // float : 單精度浮點數&#xff08;32位&#xff09;&#xff0c;通常帶后綴 f&#xff08;如 1.0f&#xff09; // half : 半精度浮…

Agent:大模型中的智能“函數”

在傳統的編程范式中&#xff0c;函數是執行特定任務的基本單元。它們接收輸入參數&#xff0c;執行預定義的操作&#xff0c;并返回結果。這種模式在確定性和結構化任務中非常有效&#xff0c;但在處理復雜、開放性和非結構化的任務時&#xff0c;函數的局限性就顯現出來了。隨…

【數據結構】kmp算法介紹+模板代碼

目錄 1.kmp算法介紹 2.應用場景 3.KMP與暴力算法比較 4.模板代碼 KMP算法是一種高效的字符串匹配算法&#xff0c;用于在文本串中快速查找模式串的所有出現位置。其核心思想是通過預處理模式串&#xff0c;避免在匹配失敗時進行不必要的回溯&#xff0c;從而將時間復雜度優…

(自用)yolo算法學習

1.難受中&#xff0c;看了教程過后無從下手啊 2.pycharm專業版成功就好 3.安裝包時出先問題 (base) PS G:\pycharm\projects\yolo\yolov5> pip install opencv-python>4.1.1 Requirement already satisfied: opencv-python>4.1.1 in g:\anaconda\app\lib\site-packa…

實用工具-Another Redis Desktop Manager介紹

GitHub&#xff1a;https://github.com/qishibo/AnotherRedisDesktopManager/releases Gitee&#xff1a;AnotherRedisDesktopManager 發行版 - Gitee.com Another Redis Desktop Manager 是一款免費的 Redis 可視化管理工具&#xff0c;具有以下特點和功能&#xff1a; 特…

【Azure 架構師學習筆記】- Azure Networking(1) -- Service Endpoint 和 Private Endpoint

本文屬于【Azure 架構師學習筆記】系列。 本文屬于【Azure Networking】系列。 前言 最近公司的安全部門在審計云環境安全性時經常提到service endpoint&#xff08;SE&#xff09;和priavate endpoint&#xff08;PE&#xff09;的術語&#xff0c;為此做了一些研究儲備。 云…

【汽車開發工具選型指南】Jama Connect? for Automotive解決方案解析

本文來源jamasoftware.com&#xff0c;由Jama Software授權合作伙伴-龍智翻譯整理。 Jama Connect for Automotive是什么&#xff1f; Jama Connect for Automotive 旨在為開發團隊提供一個統一平臺&#xff0c;用于構建安全關鍵型和網絡安全關鍵型產品。提供滿足行業標準和法…

同旺科技USB to SPI 適配器 ---- 指令循環發送功能

所需設備&#xff1a; 內附鏈接 1、同旺科技USB to SPI 適配器 1、周期性的指令一次輸入&#xff0c;即可以使用 “單次發送” 功能&#xff0c;也可以使用 “循環發送” 功能&#xff0c;大大減輕發送指令的編輯效率&#xff1b; 2、 “單次發送” 功能&#xff0c;“發送數據…

分布式中間件:基于 Redis 實現分布式鎖

分布式中間件&#xff1a;基于 Redis 實現分布式鎖 一、背景引入 在當今的互聯網應用中&#xff0c;分布式系統變得越來越常見。在分布式環境下&#xff0c;多個服務實例可能會同時對共享資源進行讀寫操作&#xff0c;這就很容易引發數據不一致等問題。比如電商系統中的庫存扣…

嘗試使用Tauri2+Django+React項目(2)

前言 嘗試使用tauri2DjangoReact的項目-CSDN博客https://blog.csdn.net/qq_63401240/article/details/146403103在前面筆者不知道怎么做&#xff0c;搞了半天 筆者看到官網&#xff0c;原來可以使用二進制文件&#xff0c;好好好 嵌入外部二進制文件 | Taurihttps://v2.taur…

【006安卓開發方案調研】之大廠APP混合開發方案

基于國內大廠在安卓混合開發領域的實踐&#xff0c;以下是主流解決方案及其核心技術實現路徑的深度解析&#xff1a; 一、主流混合開發解決方案分類 1. Flutter混合開發體系 架構設計 采用組件化分層架構&#xff0c;原生工程作為宿主&#xff0c;通過MethodChannel與Flutter…

Mysql配套測試之查詢篇

&#x1f3dd;?專欄&#xff1a;Mysql_貓咪-9527的博客-CSDN博客 &#x1f305;主頁&#xff1a;貓咪-9527-CSDN博客 “欲窮千里目&#xff0c;更上一層樓。會當凌絕頂&#xff0c;一覽眾山小。” 目錄 條件查詢簡單測試&#xff1a; 1.查詢英語成績不及格的同學(<60) 2…

設計和布局硬件電路是嵌入式系統開發的重要環節

設計和布局硬件電路是嵌入式系統開發的重要環節&#xff0c;涉及從需求分析到原理圖設計、PCB&#xff08;印刷電路板&#xff09;布局以及最終的硬件調試。以下是完整的流程和技術要點&#xff1a; 1. 硬件電路設計的基本流程 1.1 需求分析 明確功能需求&#xff1a;確定系統…

PicFlow:一個圖片處理與上傳工作流工具(圖床上傳工具)

自從學習搭建網站以來&#xff0c;我就把很多圖片托管在七牛云等圖床平臺上。以前總是通過網頁批量上傳&#xff0c;需要登錄并一步步跳轉網頁操作&#xff0c;久而久之就厭煩了&#xff0c;于是花了一天時間用 Python 寫了一個工具 —— PicFlow&#xff0c;從名字可以看出&am…

Web純前端實現在線打開編輯保存PPT幻燈片

很多項目中有時會需要在線打開PPT并編輯保存到服務器。猿大師辦公助手可以完美調用本地office在線打開ppt文件&#xff0c;跟本地打開效果一樣。還可以在線打開word、excel、pdf等文件&#xff0c;支持本機OFFICE完整嵌入模式&#xff0c;本機OFFICE所有功能基本都可以在網頁上…

Android Compose 約束布局(ConstraintLayout、Modifier.constrainAs)源碼深度剖析(十二)

Android Compose 約束布局&#xff08;ConstraintLayout、Modifier.constrainAs&#xff09;源碼深度剖析 一、引言 在 Android 開發中&#xff0c;布局是構建用戶界面的基礎。隨著 Android 開發技術的不斷發展&#xff0c;Jetpack Compose 作為一種全新的聲明式 UI 框架應運…

常考計算機操作系統面試習題(二)(上)

目錄 1. 描述分段內存管理機制 2. 解釋文件分配磁盤塊鏈接分配方法的優點和缺點 3. 進程的狀態有哪些&#xff1f; 4. 一個進程的空間包括哪些部分&#xff1f; 5. 進程和程序的區別&#xff1f; 6. CPU調度可能發生在當一個進程&#xff1a; 7. 哪些條件同時出現&#…