个人学习编程(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.mzph.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. 哪些条件同时出现&#…