《九国列车》(学习报告)《leecode零基础指南》(第8天) ——贪心,对题目的处理及题解和错题的总结

本文介绍了四个简单的LeetCode题目,涉及贪心算法、排序技巧和数组操作:1913题找最大乘积差、976题三角形周长判断、561题数组拆分求和及带有限制条件的问题。通过实例演示和错误代码修正,适合新手理解算法核心思想。
摘要由CSDN通过智能技术生成

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萌新零基础打卡指南第八天,临近期末考试了,不管山洪海啸,明天也要坚持下去哦!

天道酬勤,勤能补拙,加油,萌新们! 

 

 

评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴有想法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值