HOT 100 | 189.轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数

leetcode-hot100-5普通数组 具体思路是通过两个数组分别记录索引 i 左侧所有元素的乘积和右侧所有元素的乘积,对于索引 i,除 nums[i] 之外其余各元素的乘积就是左侧所有元素的乘积乘以右侧所有元素的乘积。思路分析:这道题找规律就行了,k = 3,相当于把最后 3 个元素插入到新数组,前面的按顺序往后插入就行了,唯一需要注意的是 k 有可能会大于 nums 的长度,因此需要取模处理。思路分析:这道题还是相对简单的,但要注意的是,数组区间重合可能有多种情况,但不重合只有一种情况,因此下面的代码的条件判断是不重合的情况。 阅读详情

一、189.轮转数组

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

1. 解题思路

1. 由于k可能很大,为了防止多次重复挪动,所以只需要对其取余,就是最终挪动的位置。

2. 自定义一个翻转函数reverse,传入起始位置,然后交换元素即可。

3. 调用翻转函数,首先进行整体翻转,然后对前K个和后K个进行翻转就是最后的结果。

2. 代码实现

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        def reverse(i: int, j: int) -> None:
            while i < j:
                nums[i], nums[j] = nums[j], nums[i]
                i += 1
                j -= 1
        n = len(nums)
        k %= n
        reverse(0, n-1)
        reverse(0, k-1)
        reverse(k, n-1)

二、238. 除自身以外数组的乘积

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

1. 解题思路

        answer[i] 等于 nums 中除了 nums[i] 之外其余各元素的乘积。换句话说,如果知道了 i 左边所有数的乘积,以及 i 右边所有数的乘积,就可以算出 answer[i]。所以基本的解题思路是,先计算出前缀积,再计算出后缀积,然后对应相乘就是最后的结果。

        1. 定义 pre[i] 表示从 nums[0] 到 nums[i−1] 的乘积。定义 suf[i] 表示从 nums[i+1] 到 nums[n−1] 的乘积。
        2. 可以先计算出从 nums[0] 到 nums[i−2] 的乘积 pre[i−1],再乘上 nums[i−1],就得到了 pre[i],即:pre[i]=pre[i−1]⋅nums[i−1];同理有:suf[i]=suf[i+1]⋅nums[i+1]。

        初始值:pre[0]=suf[n−1]=1。按照定义,pre[0] 和 suf[n−1] 都是空子数组的元素乘积,我们规定这是 1,因为 1 乘以任何数 x 都等于 x,这样可以方便递推计算 pre[1],suf[n−2] 等。

        3. 算出 pre 数组和 suf 数组后,有:answer[i]=pre[i]⋅suf[i]。

2. 代码实现

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        n = len(nums)
        pre = [1] * n
        for i in range(1, n):
            pre[i] = pre[i-1]*nums[i-1]
        
        suf = [1] * n
        for i in range(n-2, -1, -1):
            suf[i] = suf[i+1] * nums[i+1]
        return [s* p for s, p in zip(pre,suf)]

三、41.缺失的第一个正数

41. 缺失的第一个正数 - 力扣(LeetCode)

1. 解题思路

        1. 由于时间复杂度的限制不能额外拓展一个新数组,所以首先将所有元素放在对应的位置上,也就是遍历数组,然后两两进行交换位置。

        2. 找到第一个不匹配的元素就是缺失的第一个正数。

        3. 如果都没有找到,说明元素都在自己正确的位置,直接返回数组长度+1即可。

2. 代码实现

class Solution:
    def firstMissingPositive(self, nums:List[int])->int:
        n = len(nums)
        for i in range(n):
            while 1<=nums[i]<=n and nums[i] != nums[nums[i]-1]:
                j = nums[i]-1
                nums[i],nums[j] = nums[j],nums[i]
        for i in range(n):
            if nums[i]!=i+1:
                return i+1
        return n+1
       

leetcode hot100 (面试复习用) 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]// 继续向左查找} else {// 查找目标值在数组中的结束位置// 继续向右查找} else { 阅读详情

相关推荐

IEEE LaTeX模板中algorithm排版避坑指南:如何优雅地嵌入算法描述?

本文详细解析了在IEEE LaTeX模板中优雅排版algorithm的实用技巧,包括基础配置、高级自定义及常见问题解决方案。通过嵌套环境与[H]参数的应用,帮助研究者克服IEEEtran模板对算法排版的限制,实现专业且美观的算法呈现。

weixin_28340315的博客 408

力扣hot100 | 普通数组 | 53. 最大子数组和、56. 合并区间、189. 轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组(数组中连续的元素序列)是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23。

m0_56231308的博客 1293

王爽《汇编语言》课程设计2(不涉及软盘版本)

assume cs:code,ds:data,ss:stack stack segment db 128 dup (0) stack ends data segment db 256 dup (0) data ends code segment start: mov ax,stack mov ss,ax mov sp,128 ...

weixin_41944412的博客 1178

LeetCode Hot 100 - 普通数组 | 53.最大子数组合、56.合并区间、189.轮转数组、238.除自身以外数组的乘积、41.缺失的第一个正数

贪心,和小于0就抛弃。

Alive1218的博客 259

宜搭,高级认证实操2,FaaS连接器指导教程

找到FaasEntry.java将如下代码整体替换,注意引包。如图所示在util下新建EDSUtil.java代码如下。回到连接器界面点击右上角测试-->测试。连接器工厂-->新建FaaS连接器。保存-->前往云IDE开发。返回如图所示代码,部署成功。

2301_80286061的博客 3343

Infineon MOSFET开关损耗计算实战指南

本文是英飞凌MOSFET开关损耗计算的实战指南。针对MOSFET发热问题,文章深入剖析了开关损耗的产生机理,并基于Infineon数据手册的关键参数,手把手推导了开通与关断损耗的工程计算公式。同时,指南强调了栅极电阻、寄生参数等实际因素对损耗的影响,并提供了从理论计算到实测优化的完整路径,帮助工程师精准评估与优化电源设计。

weixin_29212867的博客 443

LeetCode Hot 100 第7天

链接:题目链接 题解:代码: 2. 238 除自身以外数组的乘积 链接:题目链接 题解:代码: 3. 41 缺失的第一个正数 链接:题目链接 题解:代码: 如果对你有帮助,辛苦点个赞,谢谢啦,朋友!!!

奋斗小白的博客 372

samba源码编译安装(版本4.13.0)

这里写目录标题前言编译安装samba下载三个包安装依赖共需要安装samba、gnutls、nettle1、进入解压后的samba目录执行:2、进入解压后的gnutls目录执行3、进入解压后的nettle目录执行3.1 卸载已存在nettle3.2 编译3.3 make3.4 安装4、进入gnutls继续编译4.1 编译4.2 make4.3 安装5、再次进入解压后的samba目录5.1 执行./configure5.2 make5.3 samba安装启动samba 前言 一般来说,安装samba最快的方式应

灵葱的博客 1万+

LeetCode Hot100 (普通数组)

我们定义前一个为a,后面一个为b,进行排序之后(a小的在前面,其次b小的在前面),这样就成为了一个线段覆盖问题,就会出现三种情况,简单的前缀和问题,我们记录当前位置前面的乘机,与当前位置后面的乘机即可,注意末尾和0位置应当为1。简单的dp问题实际上,如果当前位置的前一个位置的和大于0我们直接加上,不大于就忽略即可。不难发现,最大的正数也不会超过数组的长度,建立数组,一个一个放入即可。2.当前线段与前一个交接了一部分(两条线段合并)1.当前线段被前一个包围(忽略即可)3.不包含(再起一段)

asom12的博客 386

Autosar入门_OS_5

os hook函数说明

u012406840的博客 398

OpenClaw 多代理协同工作模式配置指南

OpenClaw 采用。

形上得其象,形下合于数;阴阳自济,玄理自明。 1万+

力扣hot100_普通数组_python版本

【代码】力扣hot100_普通数组_python版本。

Y1n的博客 3879

多模态大模型在AI人工智能领域的创新实践探索

随着人工智能技术的飞速发展,单一模态的数据处理已经难以满足复杂现实场景的需求。多模态大模型通过融合多种模态的数据,如文本、图像、音频等,能够更全面、深入地理解和处理信息,为人工智能的发展带来了新的机遇和挑战。本文的目的在于深入探讨多模态大模型在AI人工智能领域的创新实践,包括其核心概念、算法原理、实际应用等方面,旨在为相关领域的研究人员和从业者提供全面的技术参考和实践指导。本文的范围涵盖了多模态大模型的基本原理、算法实现、数学模型、项目实战以及实际应用场景等多个方面。

大模型应用工坊 1316

力扣Hot100系列6(Java)——[普通数组]总结(下)(除自身以外数组的乘积,缺失的第一个整数)

本文解析了力扣Hot100中两道数组相关题目。第一题"除自身以外数组的乘积"要求不使用除法,通过两次遍历(从左到右计算左侧乘积,从右到左结合右侧乘积)实现O(n)解法。第二题"缺失的第一个正整数"通过原地置换将数值k放到索引k-1的位置,再遍历查找第一个不匹配位置。两题均实现了O(n)时间复杂度和常数空间复杂度,展示了数组处理的高效技巧。

2402_89049045的博客 1160

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

力扣(leetcode)hot 100普通数组看这一篇就够了

这期带来的是关于力扣 hot 100当中关于普通数组这一节的内容。保证看了的人都能够学会

yyyCode的博客 2363

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python题解Leetcode Hot100之数组

Leetcode Hot100之数组解题思路详解和python代码,包括最大子数组和、合并区间、轮转数组、除自身以外数组的乘积、缺失的第一个正数

BigerBang的博客 1217

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Hot100——普通数组

nowansnowansnownowansnownow[4,-1,2,1]这个算法的优势在于只需要一次遍历就能得到结果,是解决此类问题的最优方案之一。

qq_35639854的博客 1554

Day6--HOT100--238. 除自身以外数组的乘积,41. 缺失的第一个正数,73. 矩阵置零

Day6–HOT100–238. 除自身以外数组的乘积,41. 缺失的第一个正数,73. 矩阵置零 每日刷题系列。今天的题目是力扣HOT100题单。 题目类型:普通数组,矩阵。(方法:前缀,置换,哈希)

m0_60740070的博客 575

《Leetcode》-面试题-hot100-数组

本文总结了5个中等难度的LeetCode数组算法题解:1. 最大子数组和(动态规划O(n)解法);2. 合并区间(排序后遍历O(nlogn));3. 轮转数组(三次反转O(n));4. 除自身外数组乘积(左右累乘O(n));5. 缺失的第一个正数(原地哈希O(n))。每个问题都提供了示例、解题思路和时间复杂度分析,采用Python实现,涵盖了动态规划、双指针、原地修改等经典算法技巧。这些题目考察了数组操作的核心算法思想,适合准备技术面试的开发者练习。

乐于创作,乐于分享,志于创作高价值博文 1284

leetckde hot100 普通数组

最初的想法就是新增一个数组作为flag数组, 循环遍历给出的整数数组, 出现的标志为1, 未出现的默认为0, 再次遍历时查找第一个为0的正数即为所求。如果再次遍历flag数组, 查找到第一个为0 的flag即可返回, 若遍历完数组flag均为1, 则说明该数组是从1-n的连续数组, 返回n+1即可。但如果不排序直接进行比较, 可能会因为逻辑上的判断而出错, 比如[[8,10],[1,3]], 判断10>1,所以该区间合并为[1,10]创造一个新的数组, 给定一个偏移量为k%n的映射。

weixin_74191696的博客 674

leetcode-hot100-普通数组:53最大子数组和-56合并区间-189轮转数组-238除了自身以外数组的乘积-41缺失的第一个正数

普通数组:53最大子数组和-56合并区间-189轮转数组-238除了自身以外数组的乘积-41缺失的第一个正数

XSYaaaaan的博客 422

hot100 -- 普通数组

最大子数组和,合并区间,轮转数组,除自身以外数组的乘积,缺失的第一个正数

IT OR 考公? 1016

leecodehot100刷题--普通数组

这里使用了动态规划的思想,就是说如果当前元素的加上前面的元素比不上当前元素大的话,就舍弃前面的元素,从当前元素开始。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].连续子数组 [4,-1,2,1] 的和最大,为 6。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。向右轮转 1 步: [99,-1,-100,3],请你找出其中没有出现的最小的正整数。

m0_71944529的博客 1249

【力扣hot100】刷题笔记Day6

普通数组:最大子数组和 + 合并区间 + 轮转数组 + 除自身以外数组的乘积 + 缺失的第一个正数

小涛44的博客 1434

【LeetCode Hot100 普通数组】最大子数组和、合并区间、旋转数组、除自身以外数组的乘积、缺失的第一个正整数

【LeetCode Hot100 普通数组】最大子数组和、合并区间、旋转数组、除自身以外数组的乘积、缺失的第一个正整数

Luo_LA的博客 799

LeetCode Hot100 - 普通数组篇

力扣hot100中的普通数组部分

m0_70220973的博客 1120
上一篇: HOT 100 | 【子串】76.最小覆盖子串、【普通数组】53.最大子数组和、【普通数组】56.合并区间
下一篇: HOT 100 | 73.矩阵置零、54.螺旋矩阵、48.旋转图像
Accept17
博客等级 码龄4年 479粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值