力扣打卡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;
    }
}
相关推荐
Omics Pro几秒前
1个月2轮融资!长寿虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
residual_fan几秒前
航空发动机故障诊断专用智能体(六):实际机队健康管理中的应用考量与展望
人工智能·算法·数据挖掘·数据分析
hansang_IR23 分钟前
【讲解】CSP-S2026 第一轮初赛
c++·算法
hanlin0325 分钟前
刷题笔记:力扣第76题-最小覆盖子串
笔记·算法·leetcode
Zane199427 分钟前
比较排序跑不出O(nlogn)是数学上证明过的,计数、桶、基数排序凭什么能绕开这堵墙
算法·排序算法
tiger86528 分钟前
大语言模型面试和题解,梳理中国主流开源 LLM 系列的发展脉络、技术路线与工程取舍
人工智能·gpt·深度学习·算法·自然语言处理·面试·transformer
我不会起名字32241 分钟前
一天一道力扣Hot100(36):深度优先算法---组合总和
数据结构·c++·后端·python·算法·go
雨落在了我的手上1 小时前
Java数据结构(十五):哈希表
数据结构
虚无的纽扣1 小时前
【力扣刷题】第三天:有效三角形的个数、快乐数
算法·排序算法
tiger8651 小时前
大语言模型面试和题解,Context Engineering 怎么做?长 Prompt、动态上下文与 Memory 管理
人工智能·深度学习·算法·语言模型·自然语言处理·面试·nlp