力扣打卡day08——轮转数组、除自身外乘积

189. 轮转数组 - 力扣(LeetCode)

思路

输入: nums = 1,2,3,4,5,6,7, k = 3

输出: 5,6,7,1,2,3,4

解释:

当k 等于nums.length时,数组没变,所以要取模

1,2,3,4,5,6,7\] 反转一次 \[7,6,5,4,3,2,1

对前k 个反转

5,6,7,4,3,2,1

对剩下的反转

5,6,7, 1,2,3,4

复制代码
class Solution {
    public void rotate(int[] nums, int k) {
        //这个就是反转三次就行
        k=k%nums.length;
        reverse(nums,0,nums.length-1);
        reverse(nums,0,k-1);
        reverse(nums,k,nums.length-1);
    }
    public void reverse(int nums[],int start,int end){
        while(start<end){
            int tmp=nums[start];
            nums[start]=nums[end];
            nums[end]=tmp;
            start++;
            end--;
        }
    }
}

238. 除了自身以外数组的乘积 - 力扣(LeetCode)

第一个循环使用数组ans\[\]来存储每个元素左侧元素乘积(从最左侧开始,每次往右乘一个数)。

第二个循环不使用数组存储值,直接使用一个变量temp计算右侧元素乘积(从最右侧元素开始,每次往左乘一个数)。然后直接用ans\[\]*temp来计算最终结果,每一轮计算出temp就计算使用掉然后下一轮更新。

最终就只用到两个单层循环和一个数组。

原数组: 1 2 3 4

左部分的乘积: 1 1 1*2 1*2*3

右部分的乘积: 2*3*4 3*4 4 1

结果: 1*2*3*4 1*3*4 1*2*4 1*2*3*1

复制代码
class Solution {
    public int[] productExceptSelf(int[] nums) {
        int n=nums.length;
        if(n==0) return nums;
        int ans[]=new int[n];
        int tmp=1;
        ans[0]=1;
        //计算左边的乘积
        for(int i=1;i<n;i++){
            ans[i]=ans[i-1]*nums[i-1];
        }
        //计算右边的乘积
        for(int i=n-2;i>=0;i--){
            tmp*=nums[i+1];
            ans[i]*=tmp;
        }
        return ans;
    }
}
相关推荐
Nil2087 分钟前
leetcode 322零钱兑换
算法·leetcode·职场和发展
海绵宝宝转agent12 分钟前
2026-10-9 leetcode100刷题+面经整理
笔记·算法·面试
yi01122 分钟前
DAY24: LeetCode 167:两数之和 II|从暴力枚举到左右双指针
笔记·python·算法·leetcode·二分查找·双指针
木井巳23 分钟前
【BFS 解决拓扑排序】课程表
java·算法·leetcode·广度优先·宽度优先·推荐算法·图搜索算法
Logic10136 分钟前
C语言/数据结构数位DP题解:平滑排列数字统计——区间内相邻位差不超过K的数字个数
c语言·数据结构·动态规划·时间复杂度·数位dp·算法题·前导零处理
扶风ff43 分钟前
练题簿在线免费刷题:会员线下组卷、Word 试卷与成绩导入,课堂检测更方便
java·开发语言·算法·小程序·word
yi0111 小时前
LeetCode 15:三数之和|排序 + 双指针,如何避免重复答案?
笔记·python·算法·leetcode·双指针
-dzk-1 小时前
【多维动态规划】LC 1143.最长公共子序列
算法·动态规划
C++ 老炮儿的技术栈1 小时前
char (*csConnectName)[256]; 和 char csConnectName [256] 有什么区别
java·c语言·开发语言·c++·人工智能·算法·c
Omics Pro1 小时前
全新可重分析!代谢组质谱专用
数据库·人工智能·算法·机器学习·自然语言处理