[学习报告]《LeetCode零基础指南》(第六讲) C排序API

举报
执久呀 发表于 2022/02/18 16:07:27 2022/02/18
【摘要】 ​ 第一题:912. 排序数组不花里胡哨直接上。class Solution { public int[] sortArray(int[] arr) { Arrays.sort(arr); return arr;}} ​第二题:169. 多数元素class Solution { // 摩尔投票法 public int majorityElemen...

 第一题:912. 排序数组

不花里胡哨直接上。

class Solution {
    public int[] sortArray(int[] arr) {
        Arrays.sort(arr);
        return arr;
}}

 


第二题:169. 多数元素

class Solution {
    // 摩尔投票法
    public int majorityElement(int[] nums) {
        int res = 0, count = 0;
        for (int i = 0; i < nums.length; i++) {
            if (count == 0) {
                res = nums[i];
                count++;
            }
            else {
                if (res == nums[i]) count++;
                else count--;
            }
        }
        return res;
    }
}

 第三题:217. 存在重复元素

class Solution {

  public boolean containsDuplicate(int[] nums) {
      //比较相邻的元素是否相同即可
         Arrays.sort(nums);
         for(int i=0;i<nums.length-1;i++){
              if(nums[i]==nums[i+1]){
                  return true;
              }
         }
         return false;

}}

 第四题:164. 最大间距

class Solution {
    public int maximumGap(int[] nums) {
        Arrays.sort(nums);
        int max=0;
        if(nums.length==1){return 0;}
        for(int i=0;i<nums.length-1;i++){
            int count=nums[i+1]-nums[i];//一组一组赋值一组一组的比
             max=max>count?max:count;
        }
        return max;
    }
}

 第五题:905. 按奇偶排序数组

class Solution {
    public int[] sortArrayByParity(int[] nums) {
        int len=nums.length;
        int []arr=new int[len];
        for(int i=0,j=0,k=0;i<len;i++){//奇数从后面加,偶数从前加
            if(nums[i]%2==0){
                arr[j]=nums[i];
                j++;
            }
            else {
               arr[len-1-k]=nums[i]; 
               k++;
            }
        }
        return arr;

    }
}

 


第六题:539. 最小时间差

这题不会....看评论区的

class Solution {
    public int findMinDifference(List<String> timePoints) {
        int n=timePoints.size();
        if(n>1440){
            return 0;
        }
        int[] times=new int[n];
        // 将时间全部转化为分钟
        for(int i=0;i<n;i++){

            String m=timePoints.get(i).substring(0,2);
            String s=timePoints.get(i).substring(3,5);
            times[i]=Integer.parseInt(m)*60+Integer.parseInt(s);
        }
        int result=Integer.MAX_VALUE;
        
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                // 两个时间最小时间
                int time=Math.min(Math.abs(times[i]-times[j]),Math.abs(Math.abs(times[i]-times[j])-1440));
                // 所有时间最小差
                result=Math.min(time,result);

            }
        }
        return result;

    }
}

第七题:976. 三角形的最大周长

class Solution {//贪心算法
    public int largestPerimeter(int[] nums) {
        Arrays.sort(nums);
        for(int  i = nums.length-1; i>=2;i--){
            if(nums[i-2] + nums[i-1] > nums[i]) 
            return (nums[i-2]+nums[i-1]+nums[i]); 
        }
        return 0;
    }
}

第八题:881. 救生艇

class Solution {
    public int numRescueBoats(int[] people, int limit) {
        Arrays.sort(people);
        int n = people.length;
        int i = 0, j = n - 1;
        while (i < j) {
            if (people[j] + people[i] <= limit) {
                i++;//成对走
            }
            j--;
        }//最多次数减去成对次数
        return n - i;
    }
}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。