《九国列车》(学习报告)《leecode零基础指南》(第8天) ——贪心,对题目的处理及题解和错题的总结
Posted xiaowu..
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《九国列车》(学习报告)《leecode零基础指南》(第8天) ——贪心,对题目的处理及题解和错题的总结相关的知识,希望对你有一定的参考价值。
1.leetcode.1913--两个数对之间的最大乘积差
看到英雄哥命名为贪心,我去搜索了几个视频了解了一下思想,其实没学也是可以做的,我们在解决的时候主要点是找到最大的数对和最小的数对
class Solution
pubilc int jie(int [] nums)
int i,j,m;
Arrays.sort(nums);//对数组进行排序
i=nums.length;
return (nums[i-1]*nums[i-2])-(nums[0]*nums[1]);//排序后的数组最小的2个数就是第一个元素和第二个元素,同理最大的数的位置是最后一个和倒数第二个
2.leetcode.976--三角形的最大周长
下面来看一个错误的代码
- 刚开始我想着排序完取最大的三个数进行判断,如果满足三角形的定理就返回他们的和,但是忽略了当最大的三个数不满足的时候,其他也可能存在3个数满足,比如错误的案例上所给的[2,2,3,6].
-
class Solution public int jie( int [] nums) int i,j; Arrays.sort(nums); i=nums.length; for(i=nums.length;i>=3;i--)//在原来的基础上加一个循环,可以不断的更新最大的3个数作为一组去判断 if(((nums[i-3]+nums[i-2])>nums[i-1])&&((nums[i-1]-nums[i-2])<nums[i-3])) return nums[i-1]+nums[i-2]+nums[i-3]; return 0;
3.leetcode.561--数组拆分
-
class Solution public int jie(int [] nums) int i=0,num=0; for(i=0;i<nums.length;i=i+2) num=num+nums[i]; return num;
这里我们需要将数组进行排序后,取奇数位,也就是第一个,第三个,第五个,以此类推,将其相加,但是数组下标是从0开始的哈。
4.leetcode.
class Solution
public int jie(int [] nums,int limit)
Arrays.sort(nums);
//排序后就方便我们去处理这道问题了,如果最小的和最重的加起来超过limit,只能载最重的那个人过,再把上一次的最小的和下一次的最大的去比较
int a=0,num=0;//a用来表示每次判断的数组的第一个元素,也就是最小的
int c;
c=nums.length-1;//注意:我们这里是用表示数组的最后一个元素,我学jave没多久,这个地方总容易搞错,哈哈
while(a<=c)
if(a==c)//a和c相遇,说明是同一个人
num++;
break;
if((nums[a]+nums[c])>limit)
num++;
c--;//说明重的那个太重了,我们使用的船数加1,大的元素的下标往前移一位(可以理解为胖子坐船跑了哈哈)
else
num++;
c--;
a++;
return num;
总结:以上英雄哥推出的打卡题都有很多相似之处,非常适合只有语言基础的萌新去了解算法思想,先水简单题,养成习惯,不会的可以去翻看视频,做好笔记,边水题边提升自己。
今天是九日集训——雪国列车leetcode萌新零基础打卡指南第八天,临近期末考试了,不管山洪海啸,明天也要坚持下去哦!
天道酬勤,勤能补拙,加油,萌新们!
以上是关于《九国列车》(学习报告)《leecode零基础指南》(第8天) ——贪心,对题目的处理及题解和错题的总结的主要内容,如果未能解决你的问题,请参考以下文章