题目大意
https://leetcode.com/problems/find-the-difference/
一个字符串s和一个字符串t,仅含有小写字母,并且s中的字符经过洗牌并在随机位置加入一字符就变成t,找到加入的那个字符
题目分析
把s和t合起来看成一个数组,做异或操作,最终结果就是那个字符,这个题跟https://leetcode.com/problems/single-number/ 思路是一样的。
https://leetcode.com/problems/find-the-difference/
一个字符串s和一个字符串t,仅含有小写字母,并且s中的字符经过洗牌并在随机位置加入一字符就变成t,找到加入的那个字符
把s和t合起来看成一个数组,做异或操作,最终结果就是那个字符,这个题跟https://leetcode.com/problems/single-number/ 思路是一样的。
https://leetcode.com/problems/reverse-bits/
给你一个整数,视其为unsigned int,按位reverse这个数
位运算,但是题目中提到,如果这个方法多次调用,如何进行效率上的优化(提交以后你会发现test case会有600组)参考https://discuss.leetcode.com/topic/9863/my-3ms-pure-c-solution/2 解法,以4位为一组,一共8组,每4位可能的翻转情况就16种,提前存在数组中。
https://leetcode.com/problems/sum-of-two-integers/
求两个整数加法,不允许用+
和-
。
题目给的方法返回值已经默认了不会整数越界,所以就不用考虑了,直接就是按位计算就行
https://leetcode.com/problems/jump-game-ii/
接续https://leetcode.com/problems/jump-game/,求从数组起点跳到终点的最小步
本题不要直接使用基于队列的暴力BFS,因为并不需要枚举出所有路径,但也是基于BFS的思想,从起点开始,类似与层次遍历,每次遍历一层获得下一层的有边界,然后继续遍历下一层。讨论区中还有更为精简的代码:
https://discuss.leetcode.com/topic/11408/single-loop-simple-java-solution/4