题目面试题29.顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
用例
1 | 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] |
1 | 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] |
解题思路
定好遍历时的边界,再模拟遍历过程进行遍历
代码
1 | class Solution { |
题目539.最小时间差
给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
用例
1 | 输入: ["23:59","00:00"] |
解题思路
排序
代码
1 | class Solution { |
题目540.有序数组中的单一元素
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。
用例
1 | 输入: [1,1,2,3,3,4,4,8,8] |
1 | 输入: [3,3,7,7,10,11,11] |
解题思路
- 二分法求解
- 将其分为两部分,并比较mid与前后两数是否相同
- 如果mid与前面的mid-1相同,判断mid-left的奇偶性,奇数那么单个元素出现在mid之后,left=mid+1,偶数,那么单个元素出现在mid之前,right=mid
- 如果mid与后面的mid+1相同,判断mid-left的奇偶性,奇数那么单个元素出现在mid之前,right=mid-1,偶数那么出现在mid之后,left=mid
- 如果都不相同,那就找到这个数了
- 只检查索引为偶数的元素
- 奇数长度的数组首尾元素索引都为偶数,因此我们可以将 lo 和 hi 设置为数组首尾。
- 我们需要确保 mid 是偶数,如果为奇数,则将其减 1。
- 然后,我们检查 mid 的元素是否与其后面的索引相同。
- 如果相同,则我们知道 mid 不是单个元素。且单个元素在 mid 之后。则我们将 lo 设置为 mid + 2。
- 如果不是,则我们知道单个元素位于 mid,或者在 mid 之前。我们将 hi 设置为 mid。
- 一旦 lo == hi,则当前搜索空间为 1 个元素,那么该元素为单个元素,我们将返回它。
代码
1 | class Solution { |