自学内容网 自学内容网

力扣-Hot100-数组【算法学习day.37】

前言

###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

tip:部分题我暴力写法,没按照题目限制要求,建议看看题解

1.轮转数组

题目链接:189. 轮转数组 - 力扣(LeetCode)

题面:

代码:

class Solution {
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        k = k%n;
        int[] arr = new int[n-k];
        for(int i = 0;i<n-k;i++){
            arr[i] = nums[i];
        }
        for(int i = n-k;i<n;i++){
            nums[(i+k)%n] = nums[i];
        }
        int count = 0;
        for(int i = k;i<n;i++){
            nums[i] = arr[count++];
        }
    }
}

2.除自身以外数组的乘积

题目链接:238. 除自身以外数组的乘积 - 力扣(LeetCode)

题面:

代码:

class Solution {
    public int[] productExceptSelf(int[] nums) {
        int sum = 1;
        int n = nums.length;
        int flag = 0;
        for(int i = 0;i<n;i++){
            if(nums[i]==0){
                flag++;
                continue;
            }
            sum*=nums[i];
        }
        for(int i = 0;i<n;i++){
            if(flag>=2)nums[i] = 0;
            else if(flag==1&&nums[i]!=0)nums[i] = 0;
            else if(nums[i]!=0)nums[i] = sum/nums[i];
            else nums[i] = sum;
        }
        return nums;
    }
}

3.缺失的第一个正数

题目链接:41. 缺失的第一个正数 - 力扣(LeetCode)

题面:

代码:

class Solution {
    public int firstMissingPositive(int[] nums) {
        Map<Integer,Integer> map = new HashMap<>();
        int n = nums.length;
        for(int i = 0;i<n;i++){
            map.put(nums[i],1);
        }
        for(int i = 1;i<=100006;i++){
            if(map.getOrDefault(i,0)==0)return i;
        }
        return 0;
    }
}

后言

上面是力扣Hot100的数组专题,下一篇是其他专题的习题,希望有所帮助,一同进步,共勉!


原文地址:https://blog.csdn.net/2301_79232523/article/details/143866140

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!