摘要:
将当下一个节点的data和nextNode拷贝到当前节点,即完成删除 但不能用deleteNode=deleteNode.nextNode 这样是让指针循环下移 要求当前node不要后移,只要把后面的数据复制过来即可 考虑首节点为空的情况 考虑只有一个节点,删除头节点 考虑有多个节点,删除尾节点,此时需要O(n) 先循环找到deleteN... 阅读全文
摘要:
两种解法,一种递归,一种判断该数加1是否最高位进1 第二种较简单 主要两个函数,一个是打印数字,要求判断该数字是否是第一个不为零的数字,然后后面的依次打出即可 第二个函数是对一个数加1判断加1之后的数是否使得最高位进位 初始化长度为n的字符数组,即初始0,对该数实现字符上的加1,如果一直没进位,则打印该数,如果进位,则退出循环 第二种利用递归,全排列... 阅读全文
摘要:
注意输入的判断,多写几个if语句判断是否满足输入数据的条件 另外exp为负的时候,输入的base变为1.0/base而不是1/base 所以返回值要设置为double,base也要设为double 另外要自己定义equal,而不能用==,要去判断两个数的差的绝对值是否在一定范围内 package myPower11; public class MyPowe... 阅读全文
摘要:
三种方法 第一种不断除2 除2可以用右移方式,但这种方式对于负数的话容易造成左边全为1,进入死循环 可以判断如果输入负数的话,取他的相反数,也就是取绝对值 第二种方法不断乘2,然后用n与该乘2的数做与,如果不为零,则说明该位有一个1 但这种方式这个不断乘2的数字要乘到溢出才完,可以设定while循环条件location乘以2小于n 第三种方法利用求最右边的... 阅读全文
摘要:
基于二分法 index1为首,index2为尾,indexMid指向中间 当Number[index1]大于等于Number[index2]的条件满足时 判断index2和index1的差距是否等于1 如果相等,说明index2即为那个突变点,最小值,将index2赋给indexMid,最终返回Number[indexMid] 如果不等,就取indexMi... 阅读全文
摘要:
主要实现从尾部添加字符和从头部删除字符 从尾部添加直接push进一个stack1即可 从头部删除,需要先将stack1中的字符压入stack2,然后从stack2弹出,这样顺序才对 考虑一种情况,先push进a和b,弹出a,再压入c,再弹出的话要弹出b 在将stack1的数压入stack2之前要判断stack2中是否为空,如果不为空,要等stack2为空了之后才... 阅读全文
摘要:
利用栈,倒序都可以用栈解决 先将数据一个一个压入栈 然后再一个一个弹出 另外还有一种方法是利用递归,递归其实跟栈类似 方法一: package printListReversed5; import java.util.Stack; public class PrintListReversed5 { static void printListRever... 阅读全文
摘要:
先遍历每个字符统计空格数 :String.charAt() 根据空格数计算新的长度 :newLength=oriLength+2*NumOfBlank 新建一个newLength长度的字符数组tempChars用于存放替换空格之后的字符数组 利用System.arraycopy函数将原字符串转换为数组拷贝到新的字符数组tempChars中 从新字符数... 阅读全文
摘要:
先判断数组是否为空,为空返回false 不为空进入循环 获得矩阵的行数:rows=matrix.length 获得矩阵的列数:columns=matrix[0].length 从最右上角开始找,初始化row和column:row=0,column=columns-1; 所以while条件为 row=0 如果找到,即matrix[row][column]=numb... 阅读全文
摘要:
corner case的处理 整数一般考虑两点:一点是符号,另外一点是越界 首先去掉多余的空格字符 然后读符号,可能是正号,也可能是负号,也可能没有符号 然后按顺序读数字 结束条件有三: 1、异常字符出现——舍弃异常字符后的数据,保留前面的数作为结果; 2、数字越界——返回最接近的整数; 3、正常结束 长度为0,返回0 输入0,返回... 阅读全文