leetcode | 初级算法-数组

LeetCode初级算法练习——数组篇 数组篇26. 从排序数组中删除重复项给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。示例:给定数组: nums = [1,1,2], 你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2 不需要理会新的数组长度后面的元素Given a sorted ar... 阅读详情

01 起

最近“不务正业地”刷了一波leetcode上的算法题,初级算法已经刷完50%,战况如下,

刷题固然爽快,但及时总结才是进步之道,下面就数组部分的题目进行回顾和总结。

注意,刷题使用的语言是Python3,"数组"这个数据结构在Python中对应的就是"列表"list。

初级算法中数组类题目共11道,如下,我们一道一道来总结


02 解题

下面我们逐个击破数组部分的11道题。

2.1 从排序数组中删除重复项

题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

思路:审题在于”排序数组“和”原地算法“,对于排序数组,可以用set()实现去重并返回原顺序,另外,可以直接遍历对比num[i],num[i+1],若相同则去掉nums[i+1]

class Solution:
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if len(nums)<2:
            return len(nums)
        i=0
        while i<len(nums)-1:
            if nums[i]==nums[i+1]:
                nums.remove(nums[i+1])
            else:
                i+=1
        return len(nums)
2.2 买卖股票的最佳时机 II

题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)

思路:因为可以尽可能多地交易(买卖),又不能同时参与多笔交易,因此为了获得最大利润,可以采取如下措施:只要前一天价格低于当天,就在前一天买入股票并在当天卖出,即,遍历每天的股价,若第i天股价低于第i+1天,则在第i天买入,第i+1天卖出

class Solution:
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        profit=0
        for i in range(len(prices)-1):
            if prices[i]<prices[i+1]:
                profit+=prices[i+1]-prices[i]
        return profit
2.3 旋转数组

题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数

思路:k可能大于数组长度,于是先i=k%l,再将数组后i个元素平移到数组左边

class Solution:
    def rotate(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: void Do not return anything, modify nums in-place instead.

        """
        # 算法一:未考虑k>len(nums)的情况,运行时长64ms
        """
        l=len(nums)
        nums[:]=nums[l-k:l]+nums[:l-k]
        
        """
        算法三:此算法最高效,考虑k>len(nums)的情况,通过取余数来化解,运行时长55ms
        """
        l=len(nums)
        i=k%l
        nums[:]=nums[-i:]+nums[:-i]
2.4 存在重复

题目:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false

思路:非常简单,python的set()函数可以对列表去重,我们只需要对比set前后列表的长度是否相同即可

class Solution:
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        return len(nums)!=len(set(nums))
2.5 只出现一次的数字

题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

思路:三种思路,一是笨办法,一一对比;二是异或操作,相同两数异或为0,某数异或0为其本身;三是灵活运用set()

class Solution:
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        
        """
        算法一:如果nums过长,时间复杂度较高,不过此算法可以找出多个“只出现一次的元素”
        """
        for i in range(len(nums)):
            if nums[i] not in nums[:i]+nums[i+1:]:
                result=nums[i]
        return result
        
        """
        算法二核心思想:异或,异或操作是在二进制上的异或操作,相同两数异或=0,数异或0=数本身。
        于是定义一个整数,初始化为0,并用该数依次与列表中元素进行异或操作,最后的结果肯定就是只出现过一次的那个数(异或次序并不影响最终结果,因此不论列表元素如何排列,相同两数异或总是为0)
        此算法只对 只有一个“只出现一次的元素” 的数列适用
        """
        num=0
        for i in nums:
            num ^= i
        return num

        """
        算法三核心思想:set(list)将筛除重复元素
        此算法只对 只有一个“只出现一次的元素” 的数列适用
        """
        num=sum(list(set(nums)))*2-sum(nums)
        return num
2.6 两个数组的交集 II

题目:给定两个数组,编写一个函数来计算它们的交集

思路:两种方法,一是每比较一次,就删除数组中被比较的元素;二是直接利用Counter()计数,然后&运算

class Solution:
    def intersect(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        
        """
        思路一:每比较一次,就删除数组中被比较的元素
        实现方法:字典计数,比较后字典对应key的计数-1
        """
        result=[]
        count={}
        for num in nums1:
            count[num]=count.get(num,0)+1
        
        for num in nums2:
            if num in count.keys() and count[num]: #if 0等价于false
                result.append(num)
                count[num]-=1
        return result
        
        """
        思路二:直接利用Counter()计数,然后&运算(&运算返回a、b的counter结果中(key,value)对的交集)
        """
        from collections import Counter
        return (list((Counter(nums1)&Counter(nums2)).elements()))
2.7 加一

题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。

思路:将列表转为数字,再加一。列表转数字,两个方法,
方法一:string和int之间的转换,将列表中个数字加到空字符串,然后将最终的字符串转为数字再+1,再将此结果转为字符串,最后将字符串各元素append到列表中输出
方法二:遍历list各元素,按nums[i]10*(len(nums)-i+1)求和得到列表表示的数字
这里采用方法一

class Solution:
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        resStr="";res=0;resList=[]
        for i in digits:
            resStr+=str(i)
        res=str(int(resStr)+1)
        for i in res:
            resList.append(int(i))
        return resList
2.8 移动零

题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

思路:两种方法。思路一:遍历nums各元素i,若i为0,将i放在最后一位,i之后的元素前移一位,此方法理解上比较直观,但时间复杂度较高;思路二:遍历nums各元素i,若i为0,直接删除该元素,并在末尾补0,这种方法简单直接高效。

class Solution:
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        
        """
        思路一:遍历nums各元素i,若i为0,将i放在最后一位,i之后的元素前移一位
        560ms
        """
        n=len(nums)
        i=0;z=0
        while i<n-z:
            if nums[i]==0:
                z+=1
                for j in range(i,n-1):
                    nums[j]=nums[j+1]
                nums[n-1]=0
                if nums[i]!=0:
                    i+=1
            else:
                i+=1
        
        """
        思路二:遍历nums各元素i,若i为0,直接删除该元素,并在末尾补0
        76ms
        """
        z=0  #计数0的个数,防止连续0中后面的0被跳过
        for i in range(len(nums)):
            if nums[i-z]==0:
                del nums[i-z]
                nums.append(0)
                z+=1
2.9 两数之和

题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用

思路:两种方法。思路一:subNums存储i索引之后的list,校验target-nums[i]是否在subNums中,若存在则返回i和subNums中的索引值,此方法当 数组很长时,耗时较长;思路二:是思路一的改进版,调用迭代器enumerate()进行迭代,加快运算速度;dict存储nums各元素和对应的索引值

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        
        """
        思路一:subNums存储i索引之后的list,对比
        缺点:当nums较长时,运算时间较长
        """
        subNums=[]
        result=[]
        for i in range(len(nums)):
            subNums=nums[i+1:] #计算量减半,每次只取nums[i]之后的元素,因为之前的元素已经计算过了
            if target-nums[i] in subNums:
                result.append(i)
                result.append(i+1+subNums.index(target-nums[i]))
        return result
        
        """
        思路二:enumerate(),调用迭代器进行迭代,加快运算速度;dict存储nums各元素和对应的索引值
        """
        dictNum={}
        for i, num in enumerate(nums):
            if target-num in dictNum.keys():
                return i,dictNum[target-num]
            dictNum[num]=i #dict存储nums各元素和对应的索引值
2.10 有效的数独

题目:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数独空白格用 ‘.’ 表示。

  • 数字 1-9 在每一行只能出现一次。
  • 数字 1-9 在每一列只能出现一次。
  • 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

思路:按题意,数独最大是9X9的,用三个列表存储各行、各列、各方块的元素情况,初始化为空,判断某数字是否存在于某行+某列+某方块中,若存在,返回False,否则将此元素新增到行列方块中
难点:第i行、第j列的元素在第几个方块中?>>3*(i//3)+j//3

class Solution:
    def isValidSudoku(self, board):
        """
        :type board: List[List[str]]
        :rtype: bool
        """
        rows=[[] for i in range(9)]
        cols=[[] for i in range(9)]
        boxs=[[] for i in range(9)] #用三个列表存储各行、各列、各方块的元素情况,初始化为空
        
        for i,row in enumerate(board): #enumerate迭代器,算法效率更高
            for j,num in enumerate(row): #注意区分row rows
                if num!="." and num in rows[i]+cols[j]+boxs[3*(i//3)+j//3]:
                    return False
                rows[i].append(num)
                cols[j].append(num)
                boxs[3*(i//3)+j//3].append(num)
        return True
2.11 旋转图像

题目:给定一个 n × n 的二维矩阵表示一个图像,将图像顺时针旋转 90 度。必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

思路:根据规律,将矩阵转置,然后反转每行实现

class Solution:
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: void Do not return anything, modify matrix in-place instead.
        """
        n=len(matrix)
        for i in range(n): #手动转置矩阵
            for j in range(i+1,n): #注意j的遍历范围
                tmp=matrix[i][j] #用一个变量来存储中间态,这个idea很普遍!
                matrix[i][j]=matrix[j][i]
                matrix[j][i]=tmp
        for i in range(n):
            matrix[i]=matrix[i][::-1]

03 总结

本文解锁了leetcode初级算法题库中数组板块的全部题目,并对每道题的解题思路和代码进行说明,供你参考,也便于我日后复习总结。

下期我们将继续解锁其他板块的题目,一起进步吧!

从USB 2.0到USB 3.x:Synopsys SVT USB VIP配置避坑与接口选择指南 本文详细解析了从USB 2.0到USB 3.x的Synopsys SVT USB VIP配置要点,涵盖协议版本选择、物理接口匹配及UVM层次化架构实现。重点介绍了layering sequence的配置技巧和常见问题解决方案,帮助验证工程师高效避坑并优化验证流程。 阅读详情

相关推荐

Cadence Virtuoso实战:用gm/Id方法搞定折叠式共源共栅放大器设计(附完整仿真流程)

本文详细介绍了在Cadence Virtuoso设计环境中,运用gm/Id方法高效设计折叠式共源共栅放大器的完整实战流程。该方法通过工艺特征曲线,将设计指标映射到晶体管尺寸与偏置,有效克服深亚微米工艺下传统方法的不足。文章以TSMC 180nm工艺为例,从指标拆解、参数查找、电路搭建、仿真验证到问题调试,提供了清晰、可复现的操作指南,并探讨了自动化脚本与版图考量,助力工程师和学生提升模拟IC设计效率与成功率。

jwt8token的博客 647

leetcode题解-初级算法数组篇(6-11题)

继续填坑,本篇文章带来的是leetcode初级算法数组篇6-11题的题解。 第六题 两个数组的交集 II 题目描述:给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9]...

纸鱼的笔记 492

深入解析安卓/Linux固件:从DTB到DTS的反编译实战

本文详细介绍了如何从安卓/Linux设备固件中提取并反编译DTB文件,将其转换为可读的DTS源码。通过实战步骤,包括拆解boot.img、处理resource.img以及使用dtc工具,帮助开发者深入理解设备硬件配置,为固件定制、驱动调试和系统移植提供关键支持。

weixin_29274337的博客 339

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

class Solution { public void moveZeroes(int[] nums) { int zeroNum=0;//用来计算0的个数 for(int i=0;i&lt;nums.length;i++){ if(nums[i]==0){//如果nums[i]=0,zeroNum个数加一 ...

lu_wei_keke的博客 1万+

从零开始学 PyTorch 7天路线图(完整可运行代码版)

本文提供了5天PyTorch入门教程的完整代码,涵盖从基础到实战的核心内容。Day1测试环境并介绍张量基础;Day2讲解常用张量操作;Day3演示自动求导机制;Day4实现完整线性回归模型;Day5构建MNIST手写数字识别全连接网络。所有代码可直接运行,包含GPU检测、梯度计算、模型训练和可视化等关键环节,帮助新手快速掌握PyTorch核心概念和典型应用场景。

IT老农民的博客 314

【异常】OpenClaw网关仪表盘 pairing required 报错排查与解决方案

在OpenClaw网关仪表盘页面,完成WebSocket URL、网关令牌等必填项配置后,点击「连接」按钮尝试建立网关连接时,页面下方出现红色报错提示框,核心报错内容为,无法完成网关连接建立,且该报错在令牌配置正确、网络链路通畅的场景下仍会触发。该报错常见于非本地回环地址的访问场景,包括局域网远程访问、公网域名/IP访问、云服务器部署的网关远程管理等场景,本地127.0.0.1回环地址访问通常可正常连接。

奶爸的编程之路,也就一周冷个三天 1078

python基础(81道题)面试题,再也不用为没有答案发愁了

1、为什么学习Python? 人生苦短....哈哈,自己想吧!!! 2、通过什么途径学习的Python? 官网、网上视频、学习网站 3、Python和Java、PHP、C、C#、C++等其他语言的对比? 1、python代码,简介,明确,优雅,简单易懂2、开发效率高3、可扩展性强 4、简述解释型和编译型编程语...

weixin_33804990的博客 1万+

21天教你学会PCIe专栏(21)--总结和展望

回顾整个课程的主要内容和知识点总结PCIe技术的发展历程和现状展望PCIe技术的未来发展趋势和应用方向分享学习心得和实践经验1.1 课程回顾基础知识:了解了PCIe的基本概念、发展历程、标准和规范。分层结构:学习了PCIe的物理层、数据链路层和事务层的结构和功能。功能和特性:掌握了PCIe的热插拔、电源管理、多功能设备等高级功能。高速接口技术:学习了PCIe 4.0、5.0和未来趋势。实际案例分析:分析了GPU加速器和存储设备的PCIe设计和优化。常见问题和解决方案。

xiaoheshang_123的博客 672

LeetCode--初级算法--数组篇--第八题--移动零

题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 代码 这一题相对简单,一开始的思路就击败了99.7%的小伙伴,还是很开心的。虽然很简单,哈哈。我的思路是首先记录一下索引,将每...

innerpeacez成长之路 597

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 488

番外篇 | 关于YOLO11算法的改进点总结

关于YOLO11算法的改进点总结。🌈

小哥谈 2311

LeetCode(力扣)初级算法 数组篇

LeetCode(力扣)初级算法 数组篇、删除排序数组中的重复项、买卖股票的最佳时机 II、旋转数组、存在重复元素、只出现一次的数字、两个数组的交集 II、加一、移动零、两数之和、有效的数独、旋转图像、旋转矩阵、双指针法

weixin_50803498的博客 1422

【STM32 CubeMX】I2C中断方式与DMA方式

在STM32 CubeMX环境中,I2C(Inter-Integrated Circuit)通信协议的实现可以采用中断方式或DMA(Direct Memory Access)方式。中断方式通过触发中断来处理数据传输,而DMA方式则利用直接内存访问技术来实现数据传输,减轻了CPU的负担。在选择I2C通信方式时,开发者需要根据具体的应用需求和性能要求来选择合适的方式。STM32 CubeMX提供了图形化配置工具,使得配置I2C通信方式变得更加便捷。

m0_62599305的博客 7744

力扣(LeetCode)初级算法--旋转数组

文章目录题目C解法C++解法GO解法 题目 旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向

qq_32019341的博客 501

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

leetcode 初级算法 数组

数组只出现一次的数字旋转数组合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 只出现一次的数字 题目: 只出现一次的数字 给定一个...

randomaccessRAM的博客 346

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

力扣初级算法(数组拆分)

拿到这个题,一开始也是懵的,但是读完以后,就知道如果我们要求每对最小值相加得到的数为最大值,那么我们就应该要确保每对最小值也要拿到最大值,如果最大跟最小组队,最大值就舍弃了。如果最大值跟第二大值组队,就能拿到第二大值,第三大与第四大组队,就能拿到第四大值。我们就得到了规律,先进行排序,这样我们就能从后往前拿到第二大值,相加起来也就最大,也就是整个数组取奇数和相加。给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …

xyhxuyonghao的博客 438

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

力扣-Leetcode-初级算法-旋转数组

旋转数组 第一次尝试 思路 数组右移动K个位置,可以划分为数组移动K次,每次移动一位,如果数组移动一位的话,只需要将最后一个放到开头,剩下的后移一位就行 代码 class Solution { public void rotate(int[] nums, int k) { for (int i = 0; i < k; i++) { rightMove(nums); } } // 右移一位

burybell的博客 271

力扣网-探索初级算法-数组篇

本篇博客题目来自力扣网,分组为初级算法下的数组。适合作为数组方面的练习。上面刷题测试用例真的丰富,总是有很多考虑不到的地方。第一遍做完了,很多解法都不是最优解。主要是分享下。 探索初级算法—力扣网链接 数组 题目的话打开上面的链接就可以看到,这里就不复述了。 从排序数组中删除重复项 public int removeDuplicates(int[] nums) { int...

小jinx的博客 1231

Leetcode 探索初级算法 数组 3. 旋转数组

Leetcode 探索初级算法 数组 3. 旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] ...

小小小冰棍的博客 309

力扣LeetCode初级算法每日一题(旋转数组)

坚持解算法的第二天Java版本 坚持每天在LeetCode坚持刷算法,有兴趣的小伙伴可以和我一起坚持刷题! 初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/leetbook/detail/top-interview-questions-easy/数组 旋转数组 ​​​​​​初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 思路一:观察旋转的数组步数k可能大于数组的长度一旦达到数组的长

weixin_63426509的博客 210

力扣LeetCode初级算法(只出现一次的数字&两个数组的交集 II)

坚持刷题的第四天 力扣https://leetcode.cn/leetbook/detail/top-interview-questions-easy/数组 1.只出现一次的数字 Java方法 初级算法 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 思路一:运用按位异或的方法,异或是当两个数的相同二进制位置相同时返回0,不同则返回1,运用这一特性我们可以将nums数组元素进行异或得到单独的数字 class Solution { public int

weixin_63426509的博客 848

力扣初级算法试题分析(C/C++) - 数组(3)旋转数组

力扣初级算法试题分析(C/C++) - 数组(3)旋转数组 题目: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2...

qq_45777198的博客 315

力扣初级算法(一)— 数组(2)

初级算法 LeetCode 官方推出的经典面试题目清单 —— 「初级算法 - 帮助入门」 通过力扣的这个卡片 ,入门算法。 下面是个人刷题的记录与总结,这里会记录比较有代表性和比较好的题目 第一题,两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明: 输出结果中每个元素出现的次数,

qq_28992959的博客 370

力扣初级算法-02-数组-旋转数组

学习目标: 本次学习目标为 力扣初级算法-数组,其中主要的LC如下: 旋转数组 存在重复元素 学习内容: 旋转数组 (链接) 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,

nvluco的博客 305

LeetCode_初级算法_数组

LeetCode|初级算法_数组 题目如下: 1.1 从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 方法一 双指针 if(nums == null || nums.length==0){ return 0; } e...

马小帅的博客 359

LeetCode初级算法--数组02:旋转数组

LeetCode初级算法--数组02:旋转数组 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法、机器学习干货 csdn:https://blog.youkuaiyun.com/baidu_31657889/ csdn:https://blog.youkuaiyun.com/abcgkj/ github:https://github.com/aimi-cn/AILearners ...

小明的博客 779
上一篇: 决策树(Decision Tree) | 绘制决策树
下一篇: 支持向量机(SVM) | 核技巧于SMO算法的实现
Sudden|nebbuS
博客等级 码龄17年 112粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值