IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 力扣(LeetCode)初级算法第二弹(6~10) -> 正文阅读

[数据结构与算法]力扣(LeetCode)初级算法第二弹(6~10)

6 两个数组的交集 II

给你两个整数数组?nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]
示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

题目的要求就是找出两个数组中相同的元素。我们可以考虑使用双指针的方法,对两个数组进行排序然后指针进行遍历,由于已经排过序只用判断两个指针对应的值的大小就能完成遍历,再将判断好的两个值相等的元素加入list中。最后强制类型转换输出就好。

eg:上面大下面加,一样的是时候两个都加,下面大上面加。

代码实现:

7 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例?2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:

输入:digits = [0]
输出:[1]

这个题其实不用把他当成数组看而是直接当成几个数字构成的一个数字,我们去给他进行加法的加一就行了。想是这么想我们实现的时候还是用数组去实现。

1,如果不是9我们就直接加,

2,如果是9我们就把那一个元素变成0,把下一个元素加1。

3,当出现99....99这种情况我们获取原数组的长度,新建一个数组并给第一个元素赋值为1.

代码实现

?8 移动零

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

请注意?,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:

输入: nums = [0]
输出: [0]

这题的要求也很清晰,就是找到数组中的0,把他们放到末尾去。

这个题也可以用双指针来实现,j指针负责遍历数组,i指针遇到0++,

代码实现:

?

?9 两数之和

给定一个整数数组 nums?和一个整数目标值 target,请你在该数组中找出 和为目标值 target??的那?两个?整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

这个题需要我们在数组中找到能组成目标值的两个元素,组成新的数组并返回。

这个题乍一看感觉暴力解就能解,只要2个for循环并进行判断就行,这题我们用HashMap键值对的方法求解。Key就是数组的元素,Value就是数组的下标,我们遍历数组传入值和下标,一边传一边判断如果key=(目标值-当前元素值)不为空我们就返回这两个数就行,否则返回{0,0}。

代码实现

?10 有效的数独
请你判断一个?9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。

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

?这题说实话我第一次没做出来,这个题用的官方的解题思路,

9宫格数独大家都玩过吧,就是每行,每列以及对应3*3的单元格内只能有1-9这9个数字,并且不能有重复的。

我们首先遍历9宫格的所有元素,然后使用3个二维数组遍历,记录对应的行,列以及3*3单元格是否有某个数字,如果出现冲突,直接返回false。大致思路就是这样这里只对里面的一个语句解释一下,注释说得不是很好

减一前面那一步确实是转化成数字,但是这并不是当成数字来使用的而是作为key,也就是下标来使用的,下面那个value是多少并没有什么关系,只要value重复就返回false所以是多少并没有什么关系。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:31:09  更:2022-08-19 19:34:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:38:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计