线性枚举(C语言)
1.求最大值
比如求一个线性表中的最大值,可以先设定一个最大值,把它初始化为一个非常小的数,然后遍历给定的线性表,将其中的每个元素和目前的最大值比较,如果比它大,则更新这个最大值;
如果比它小,就不做任何处理。遍历完毕返回最大值就是我们要求的解了。写成伪代码如下:
最大值 = 非常小的数
for 当前元素 in 给定的线性表
if 当前元素 > 最大值
最大值 = 当前元素
返回最大值
2.求和
求一个线性表中元素的和,可以先设定一个求和的值,初始化为0,然后遍历给定的线性表,
将当前元素的值累加到求和变量上,最后返回求和变量的值,就是我们要求的解了。
求和=0
for 当前元素 in 给定的线性表:
求和=求和+当前元素
返回求和的值
3.时间复杂度
线性枚举的时间复杂度为O(nm),其中n是线性表的长度。m是每次操作的量级,对于求最大值和求和来说,因为操作比较简单,所以为1,则整体的时间复杂度是O(n)的。这是因为线性枚举需要遍历列表中的每个元素。在处理大规模数据时,可能需要使用更高效的算法来提高搜索速度。
4.优缺点
4.1优点
线性枚举是一种简单直观的算法,容易理解和实现,也是暴力算法中最简单的一种。
4.2 缺点
线性枚举的时间复杂度较高,对于大规模数据集可能效率较低。
5.线性枚举的优化
5.1二分查找
如果线性表已排序,可以通过二分查找来提高效率。
5.2哈希表
可以使用哈希表来存储已经搜索过的元素,避免重复搜索。
5.3前缀和
可以存储前ⅰ个元素的和,避免重复计算。
5.4双指针
可以从两头开始搜索,提升搜索效率。
6.结论
线性枚举是一种简单而有效的算法思想,它可以用于解决许多基本的算法问题。虽然它的时间复杂度较高,但在处理小型数据集时仍然是一种常用的算法。在实际应用中,我们可以根据具体情况选择是否使用线性枚举,或者使用其他更高效的算法来提高程序的效率。
7.实战
7.1力扣1550. 存在连续三个奇数的数组
给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false
。
bool threeConsecutiveOdds(int* arr, int arrSize) {
for(int i = 0; i + 2 < arrSize ; i++){
int a = arr[i];
int b = arr[i+1];
int c = arr[i+2];
if(a % 2 == 1 && b % 2== 1 && c % 2 == 1){
return true;
}
}
return false;
}
7.2力扣485.最大连续1的个数
给定一个二进制数组 nums , 计算其中最大连续 1 的个数。
int findMaxConsecutiveOnes(int* nums, int numsSize) {
int pre = 0;
int max = 0;
for(int i = 0; i < numsSize ; i++){
if(nums[i] == 1){
pre++;
if(pre > max){
max = pre;
}
}
else{
pre = 0;
}
}
return max;
}
7.3力扣540 有序数组中的单一整数
给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。
请你找出并返回只出现一次的那个数。
你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。
int singleNonDuplicate(int* nums, int numsSize) {
if(numsSize == 1){
return nums[0];
}
for(int i = 1; i < numsSize - 1; i++){
if(nums[i] != nums[i+1] && nums[i] != nums[i-1]){
return nums[i];
}
}
if(nums[0] != nums[1]){
return nums[0];
}
return nums[numsSize - 1];
}
线性枚举(C语言)的更多相关文章
- R语言中的线性判别分析_r语言 线性判别分析
R语言中的线性判别分析_r语言 线性判别分析 在R语言中,线性判别分析(Liner Discriminant Analysis,简称LDA),依靠软件包MASS中有线性判别函数lqa()来实现.该函数 ...
- 线性表 - C语言完整实现
#include <stdio.h> #define false 0 #define true 1 #define MAXSIZE 20 typedef int bool; typedef ...
- 伪随机数(线性同余法)C语言
/**Keil Lib*2015.6.12*Pass*by lort*/uint32 Srandx ; uint32 SrandK = 1103515245;//0x41C64E6D;uint32 S ...
- 枚举java语言中的修饰符组合
package model; /*22:37 2019/7/20*/ /* top class的修饰符组合 abstract final public 2 * 2 * 2 warning: abstr ...
- C++语言对C的增强(2)—— const增强、枚举的增强
1.const基础知识 #include <iostream> int main(void) { //const定义常量--->const意味着只读 const int a; int ...
- windows官方多语言方案
编写 Win32 多语言用户界面应用程序 Windows 2000 针对全球市场制定了新的增强支持标准,提供了许多国际化功能,例如完全支持 Unicode.预设支持数百种语言以及用于从右向左语言的镜像 ...
- 1、c++对c语言的扩展
1.类型增强 检查更加严格 比如,把一个 const 类型的指针赋给非 const 类型的指针.c 语言中可以通的过,但是在 c++中则编不过去 ; int b = a; const int *pa ...
- 5、数组&字符串&结构体&共用体&枚举
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...
- 04C++const增强、枚举的增强
#include <iostream> int main(void) { //const定义常量--->const意味着只读 const int a; int const b; // ...
- Codeforces J. Sagheer and Nubian Market(二分枚举)
题目描述: Sagheer and Nubian Market time limit per test 2 seconds memory limit per test 256 megabytes in ...
随机推荐
- [CEOI2010 day2] tower 题解
前言 题目链接:洛谷. 题意简述 你要对一个数组排序,满足 \(a_{i + 1} \leq a_i + D\),其中 \(D\) 是给定的常数.求方案数对 \(10^9+9\) 取模的结果. 题目分 ...
- OpenTiny HUICharts开源发布,带你了解一个简单、易上手的图表组件库
摘要:目前 OpenTiny HUICharts 已经成功落地在华为内部100多个产品中,持续提升了用户的可视化体验. 本文分享自华为云社区<OpenTiny HUICharts 正式开源发布, ...
- 实习记录day03:尝试写一个接口
前言:今天突然意识到,实习记录很少有技术性的东西,更多的是自己的心里活动和一些感想,其实这类博客更趋向于日记而非技术记录.也许哪天不再充满兴趣了,这个实习记录也就结束了(想下班了同志们) 实习第三天: ...
- quartz监控日志(二)添加监听器
上一章介绍监控job有三种方案,其实还有一个简单方案是实现quartz的TriggerListener. 上次我也试了这个方案,但是由于操作错误,导致没有监控成功,所以才选择分析源码来实现代理进行监控 ...
- 仿MFC的消息印射(全局函数的实现)
//弄了个仿MFC消息映射,这是全局函数都好弄,照着MFC就弄出来了,//在vs2017上可以通过#include <windows.h> #include "resource. ...
- kube-flannel.yml
--- apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: psp.flannel.unprivileged anno ...
- C# 使用HtmlAgilityPack 抓取 网站链接
今天在找电视剧下载链接的时候,找了一个整部剧的下载地址,但是有40多集,链接地址较长且不好复制,于是就想到了HtmlAgilityPack抓取的方式. 先看实现效果: 使用到的NUGET包: Html ...
- Windows PE 安装
Microsoft 官方提供的 Windows PE 默认只有命令行界面.如果想要使用带有桌面环境的 Windows PE,推荐使用微 PE . 下载并安装 Windows ADK 和 WinPE 加 ...
- 火山引擎VeDI赋能小城酒店业,助力“流量”向“留量”转化
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群. 今年,"去小城过假期"正悄然流行.根据途牛旅游发布的<2024年上半年度旅游消费报 ...
- R-Adapter:零样本模型微调新突破,提升鲁棒性与泛化能力 | ECCV 2024
大规模图像-文本预训练模型实现了零样本分类,并在不同数据分布下提供了一致的准确性.然而,这些模型在下游任务中通常需要微调优化,这会降低对于超出分布范围的数据的泛化能力,并需要大量的计算资源.论文提出新 ...