![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
离天九夜
一只刚刚起步的程序猿
展开
-
【菜鸡的力扣笔记】面试题10.02.变位词组
题干编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。思路首先想到的是从每个字符串生成一个标志用于分类和比较,对于一个纯小写字母的字符串而言有两种可行的方案:可以对不同字母赋予不同值然后求和,用字母权值和标识字符串按字母表顺序对字符串进行排序,用有序的字符串作为标识代码//权值和解法vector<vector<string>> groupAnagrams(vector<string>& strs原创 2021-07-18 10:03:45 · 159 阅读 · 0 评论 -
【菜鸡的力扣笔记】201.数字范围按位与
这题常规做法耗时太长,于是考虑找规律,时间有点紧张(主要还是懒),直接看了题解。关键点在于结果是所有数字二进制的公共前缀补上对应位数的0。代码就不放了,一个新知识点:java里a /= 2 和 a >>= 1是等价的(在其他语言中应当也是如此)。除法在实际计算是会转化为移位运算,二者只是写法上的区别,在执行方式和运算效率上是相当的。!下图红框是移位运算符的执行效率,最上面是除法的执行效率,区别可以忽略。...原创 2020-08-23 21:22:09 · 93 阅读 · 0 评论 -
【菜鸡的力扣笔记】696.计数二进制子串
题目描述给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。思路计算交替出现“0”和“1”的次数原创 2020-08-10 15:45:42 · 87 阅读 · 0 评论 -
力扣刷题 994.腐烂的橘子
994.腐烂的橘子思路是多源广度优先搜索。我的做法是用一个队列(rotted)来记录腐烂的橘子的位置,已经入队的橘子的位置保存这个橘子所在的层数。int orangesRotting(vector<vector<int>>& grid) { int wid = grid.size(); int len = grid[0].size...原创 2020-08-07 20:56:17 · 173 阅读 · 0 评论 -
leetcode2020春招刷题 1013
这题按照官方的做法时间开销和空间开销都很大,看了一下数据,发现一个大神的代码,发现几个看不懂的地方,拉过来学习一下。static auto _ = [](){ ios::sync_with_stdio(false); //分离print和cout的流 cin.tie(NULL); //解绑cin和cout return nullptr;}();class Solut...原创 2020-03-11 18:46:09 · 139 阅读 · 0 评论 -
leetcode2020春招刷题第三天 面试题10.01 合并排序的数组
给了两个参数可以直接用来访问元素,就从数组尾开始比较,把大的放到后面,需要注意边界情况void merge(vector<int>& A, int m, vector<int>& B, int n) { while(m && n){ if(B[n-1] >= A[m-1]){ ...原创 2020-03-03 08:06:19 · 98 阅读 · 0 评论 -
leetcode2020春招刷题第二天 206.反转链表
这个题目是在学习数据结构时一定会思考过的问题,需要注意的是头结点的和空指针的处理,很简单,直接上代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}...原创 2020-03-02 08:34:48 · 84 阅读 · 0 评论 -
leetcode2020春招刷题第一天 225.用队列实现栈
这题的关键在于队列和栈的不同存储顺序,队列是先进先出,栈是后进先出。首先回顾一下STL的queue给出的函数queue name; //队列类型变量定义name.push() //入队操作,新来的在队尾name.front() //取队头name.back() //取队位name.pop() //去头name.empty() //判空name.size() //返...原创 2020-03-01 21:00:39 · 108 阅读 · 0 评论 -
leetcode 26.删除排序数组中的重复项
先说一下解题思路,因为要求只使用O(1)的额外空间,想到的办法是用这个空间记录从数组头部到当前处理的数字前有多少个重复项,这样只需把当前的数向前移动记录的数个位置即可。要求返回的是有多少给不重复的项,于是处理结束后再对数组进行遍历。应该还有更简便的方法,但暂时没有想到这道题遇到了两个问题越界最开始做遍历数组计算有多少不重复项时,使用这样的语句:for(int i = 0; i < n...原创 2020-02-03 10:53:00 · 134 阅读 · 0 评论