两个数组的交集(350)
题目分析
我们先来看一道题目:
| 第350题:两个数组的交集 |
|---|
| 给定两个数组,编写一个函数来计算它们的交集。 |
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
说明:
- 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
- 我们可以不考虑输出结果的顺序。
进阶:
- 如果给定的数组已经排好序呢?将如何优化你的算法呢?
思路:设定两个为0的指针,比较两个指针的元素是否相等。如果指针的元素相等,我们将两个指针一起向后移动,并且将相等的元素放入空白数组。
最长公共前缀(14)
题目分析
首先还是看下题目:
| 题目14: 最长公共前缀 |
|---|
| 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,则返回”” |
示例1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释:
- 输入不存在公共前缀。
说明:
- 所有输入只包含小写字母 a-z
旋转数组(189)
题目分析
| 题目189: 旋转数组 |
|---|
| 给定一个数组,将数组中的元素向右移动 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]
解释:
- 向右旋转 1 步: [99,-1,-100,3]
- 向右旋转 2 步: [3,99,-1,-100]
说明:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
要求使用空间复杂度为 O(1) 的 原地 算法。
这道题如果不要求原地翻转的话,其实相当简单。但是原地翻转的方法却并不容易想到,我们直接看题解。
加一(66)
看到这个标题,大家肯定会觉得,不就是“加1”嘛,这么简单的问题我可以!但是就是这么简单的“加1”可是面试的高频题哦,所以我们就一起来看看吧。按照往例,我们还是从一道LeetCode题开始吧。
题目分析
| 第66题:加一 |
|---|
| 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 |
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
题目分析:
根据题目,我们需要加一!没错,加一很重要。因为它只是加一,所以我们会考虑到两种情况:
普通情况,除9之外的数字加1。
特殊情况,9加1。(因为9加1需要进位)
所以我们只需要模拟这两种运算,就可以顺利进行求解!
未完待续…