![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
一只小小的Hawk
这个作者很懒,什么都没留下…
展开
-
LeetCode260.只出现一次的数字
题目表述:给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按任意顺序返回答案。 例如 输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。 如果用哈希表来解决问题,那么这题就变成一道水题了,所以题目又加了一个条件:要求O(n)时间复杂度,O(1)的空间复杂度。 这道题的解法很巧妙,需要用到异或运算。先假设现在只有一个元素出现一次,剩余元素均出现两次,那么很简单,剩余的元素两两异或为0,结果原创 2021-08-29 17:06:32 · 418 阅读 · 0 评论 -
LeetCode48. 旋转图像
题目要求:给定一个 n × n 的二维矩阵 matrix 表示一个图像。需要原地将矩阵旋转90度,不能使用额外的矩阵。 讲道理,如果没遇过这种题,让我在面试的时候现场找数学规律,那大概率是要GG。所以,背诵解法就显得很重要了(狗头)。 先说结论,有一个重要公式 翻转后 matrix[col] [n - row - 1] = 翻转前 matrix[row][col],n是矩阵的边长 至于具体操作,可以先上下翻转,然后沿主对角线翻转,搞定! class Solution { public void原创 2021-08-23 20:28:03 · 73 阅读 · 0 评论 -
Java整数相加溢出问题
平时做算法题的时候,如果两个过大的int数进行相加,有可能出现溢出的情况。像二分查找的时候,有一个小技巧,比如用 int mid = left + (right - left) / 2; 而不是直接用 int mid = (left + right) / 2; 但是要我们直接判断两个整数相加是否溢出呢? public int isOverflow(int x, int y) { int r = x + y; if (((x ^ r) & (y ^ r)) < 0) {原创 2021-08-23 17:53:14 · 1919 阅读 · 0 评论