将两个数的加法看作两步,第一步是两个数相加但是不进位,第二步是记录之前的两数相加应该进位的地方加上前一个相加但是不进位的数。对于具体的两个不小于0的数m和n,第一步可以看做m和n的异或运算m^n,第二步可以看做m和n的与运算然后左移一...
利用两个函数,一个函数充当递归函数的角色,另一个函数处理终止递归的情况。如果对n连续进行两次反运算,那么非零的n转换为True,0转换为False。利用这一特性终止递归。注意考虑测试用例为0的情况。&039;&039;&039;求1...
递推公式:f[i]=(f[i-1]+m)%i
先置换特殊字符AJQK为数字,排序,然后求出大小王即0的个数,然后求出除去0之外的,数组间的数字间隔(求间隔的时候记得减去1,比如4和5的间隔为5-4-1,表示4和5是连续的数字),同时求间隔的时候需要鉴别是否出现对。最后比较0的个数...
用两个数组来存储骰子点数的每一个总数出现次数。在一次循环中,第一个数组中的第n个数字表示骰子和为n出现的次数。在下一次循环中加入一个新的骰子,此时和为n的骰子出现的次数应该等于上一次循环中骰子点数和为n-1,n-2,n-3,n-4,n...
首先需要写一个reverse函数,把任何输入的字符串完全翻转。然后根据题目中给出的左旋转字符串的个数n,用全字符串长度length减去旋转字符串个数n,求得对于新的字符串应该在哪一位进行旋转,然后分别旋转前[:length-n]子串和...
首先需要写一个reverse函数,把任何输入的字符串完全翻转。然后从前往后依次遍历新字符串,如果遇到空格,就把空格前的字符串用reverse翻转,添加空格,继续遍历。需要注意的是,如果新字符串结尾不是空格,当遍历到结尾的时候,前一个空...
设定两个指针,先分别指向数字1和数字2,并设这两个指针为small和big,对small和big求和,如果和大于目标值,则从当前和中删除small值,并把small值加一,如果和小于目标值,则把big值加一,再把新的big值加入和中。...
设定两个指针,一个指向数组的起点,一个指向数组的终点,然后对两个数字求和,如果和大于目标值,则把后一个指针前移,如果和小于目标值,则把前一个指针后移。两个指针交汇的时候如果还没找到,就终止操作。&039;&039;&039;输入一个...
任何一个数字异或他自己都等于0,0异或任何一个数都等于那个数。数组中出了两个数字之外,其他数字都出现两次,那么我们从头到尾依次异或数组中的每个数,那么出现两次的数字都在整个过程中被抵消掉,那两个不同的数字异或的值不为0,也就是说这两个...
基于二叉树的深度,再次进行递归。以此判断左子树的高度和右子树的高度差是否大于1,若是则不平衡,反之平衡。&039;&039;&039;输入一棵二叉树,判断该二叉树是否是平衡二叉树。&039;&039;&039;-*-cod...
利用递归实现。如果一棵树只有一个结点,那么它的深度为1。递归的时候无需判断左右子树是否存在,因为如果该节点为叶节点,它的左右子树不存在,那么在下一级递归的时候,直接return0。同时,记得每次递归返回值的时候,深度加一操作。&03...
二分查找的扩展。可以构造两个函数。第一个函数查找目标数字出现的最前面的位置,先使用二分查找找到该数字,如果该数字的index>0而且该数字前面一个数字等于k的话,那么就令end=middle-1,继续二分查找。对于第二个函数...
首先依次遍历两个链表,记录两个链表的长度m和n,如果m>n,那么我们就先让长度为m的链表走m-n个结点,然后两个链表同时遍历,当遍历到相同的结点的时候停止即可。对于m<n,同理。&039;&039;&039;...
这道题可以这么想,我们要找到数组中的逆序对,可以看做对数据进行排序,需要交换数组中的元素的次数,但是防止相同大小的元素发生交换,因此需要选择一个稳定的排序方法,记录发生交换的次数。那么,基于比较的稳定的排序方法中,最快的方法就是归并了...