【跟着英雄哥学算法】 线性枚举 -- 最值算法
2021/11/7 1:10:33
本文主要是介绍【跟着英雄哥学算法】 线性枚举 -- 最值算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
n个数的最小值
代码如下
int Min(int a, int b) { // 定义函数 return a < b ? a : b; } int findMin(int* nums, int numsSize){ int i; int min = 100000001; // (2)如果定义最大值则max设为0 for(i = 0; i < numsSize; ++i) min = Min(min, nums[i]); // (3) return min; }
485.最大连续1的个数
https://leetcode-cn.com/problems/max-consecutive-ones/
int findMaxConsecutiveOnes(int* nums, int numsSize){ int count=0; int max=0; for(int i=0;i<numsSize;i++){ if(nums[i]==1){ count+=1; if(count>max){ //求最大 max=count; //每次循环的最大都等于count } }else count=0; //这个条件比较必要 }return max; }
1464.数组中两元素的最大乘积
https://leetcode-cn.com/problems/maximum-product-of-two-elements-in-an-array/
int maxProduct(int* nums, int numsSize){ int max=0; //直接暴力循环 for(int i=0;i<numsSize-1;i++) //注意i和j的取值范围既可以 { for(int j=i+1;j<numsSize;j++) //注意j=i+1 { if(((nums[i]-1)*(nums[j]-1))>max) max=(nums[i]-1)*(nums[j]-1); } }
153.寻找旋转排序数组中的最小值
https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/
别看条件这么多好像很复杂的样子,其实还是蛮简单的,只需要找到数组的最小值就可以
int findMin(int* nums, int numsSize){ for(int i=1; i < numsSize; i++){ //遍历数组,从第二个元素开始 if(nums[i] < nums[i-1]){ //若该元素小于其前一个元素则说明它为最小元素 return nums[i]; //返回nums[i] } } return nums[0]; //无符合元素则说明第一个元素为最小元素 }
154.寻找旋转排序数组中的最小值Ⅱ
https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/
听闻力扣hard很难,这道hard题我也以为很难,其实代码很简单,也很容易想到。
int findMin(int* nums, int numsSize){ int min=nums[0]; for(int i=0;i<numsSize;i++){ if(min>nums[i])min=nums[i]; }return min; }
这篇关于【跟着英雄哥学算法】 线性枚举 -- 最值算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-30PS网页切图项目实战:初学者必备指南
- 2024-09-30Span标签项目实战:新手入门教程
- 2024-09-309D资料入门指南:轻松掌握基础操作
- 2024-09-30如何获取和利用变形资料:新手入门指南
- 2024-09-30弹性盒子布局资料:新手必读教程
- 2024-09-30手把手教你如何使用“点击加载资料”功能
- 2024-09-30封装资料入门教程:轻松掌握封装资料的方法与技巧
- 2024-09-30钢琴效果资料:新手入门指南
- 2024-09-30滚动吸顶资料详解:轻松掌握网页常见布局技巧
- 2024-09-30后台交互资料详解:新手入门教程