![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java刷题笔记
yutingSun
这个作者很懒,什么都没留下…
展开
-
算法刷题--二叉树的镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像。思路:就是简单的把左右子树调换位置,但是做这种题目一定要注意限定条件,即根节点不为空,后面才能操作,然后对根节点的左右子树进行递归,继续调换位置,以此类推完成题目。代码:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode...原创 2019-05-16 10:42:45 · 173 阅读 · 0 评论 -
算法刷题--树的子结构
问题:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:1、判断B是不是空树,如果是空树,返回false;2、判断A是不是空树,如果是空树,返回false;3、如果找到了对应B的根节点的点,即在这时候AB相同了,以这个根节点为为起点判断是否包含B;4、判断是否包含B?-->因为此时找到了AB相同的节点,所以要遍历他们的左右节点是否...原创 2019-05-16 10:31:36 · 120 阅读 · 0 评论 -
算法刷题--不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:既然不准用四则运算,则考虑数值的位运算,即“异或”和“位与”。他们的计算规则是,总结:在“异或”中,只有在“01”的情况下为“1”,其他的情况为“0”,在“位与”中,只有在“11”的情况下为“1”,其他的情况为“0”。根据这个运算规则,先对两个数值进行异或处理,再进行位与处理左移一位将进位移进数值中,...原创 2019-05-16 09:29:05 · 169 阅读 · 0 评论 -
算法刷题--反转链表
题目::输入一个链表,反转链表后,输出新链表的表头。解题思路见下列注释:public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) return null; //head为当前节点,如果当前节点为空的话...原创 2019-05-15 19:52:03 · 125 阅读 · 0 评论 -
算法刷题--链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第k个结点。思路:刚看到这个题目,想的是,不能从链尾进行查询第k个数嘛,后来查询资料,链表只能从头到尾进行查询。所以要用另一种方法:在链表头部定义两个指针,让其中一个指针指向第k个节点,也就是走k-1步,然后两个指针同时向后走,直到第一个指针到了链尾,也就是说next=null了,就找到了。但是要注意三种情况:链表为空;k<=0;k超过了链表长度;...原创 2019-05-07 21:42:30 · 225 阅读 · 0 评论 -
算法刷题--调整数组顺序使奇数位于偶数前面
问题:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:冒泡排序进行处理数组,冒泡排序的思想就是这样:两两做比较,一轮结束之后,最后一个是最大的,然后再进行下一轮。最终的轮数是N-1,每一轮的比较次数为N-i。具体详细资料如:https://www.cnblogs.com...原创 2019-04-24 20:18:20 · 141 阅读 · 0 评论 -
算法刷题--数值的整数次方
题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路:次幂的问题,如果用Math.pow(x,y),x 、y都是浮点数类型,如果一个是浮点数,一个是整数,那就。。。。反正直接用公式来做不行,所以考虑用指数个底数相乘得出答案。代码:public class Solution { public double Po...原创 2019-04-24 19:10:20 · 122 阅读 · 0 评论 -
算法刷题--二进制中1的个数
问题:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:将数字转化为二进制之后,转化为字符串数组形式,再循环遍历数组,找出“1”的个数。解释:这是最low的方法我认为,十进制转化为二进制可以通过自己编程逻辑实现,也可以用自带的库实现,Integer.toBinaryString(n)。还有其他的转二进制的方法参考资料:https://www.cnblogs.com/vs...原创 2019-04-23 19:41:50 · 169 阅读 · 0 评论 -
算法刷题--变态跳台阶
问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解决:根据推算,这一题的答案是2的n-1次幂。知识点:看到次幂的问题,就想到Math.pow(double a,double b)。也可以用移位来做。移位只针对于幂指数的底是2的倍数的数。在二进制的情况下,左移相当于乘以2,即在后面加0,所以2的n次幂就相当于1<<...原创 2019-04-22 19:52:30 · 120 阅读 · 0 评论 -
算法刷题--旋转数组的最小数字
问题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:非减排序的一个数组,说明是递增数组,或者是全相等的数组。在递增数组中,查找一个数,想到采用二分查找法,二...原创 2019-04-22 15:33:57 · 116 阅读 · 0 评论 -
算法刷题--用两个栈实现一个队列,完成队列的push、pop操作,队列中的元素为int类型。
基础知识:栈是基本的线性数据结构,其遵循先进后出的原则,指针均指向栈顶,即数据的插入和删除操作均在栈顶进行;队列遵循先进先出的原则,有队头(front)和队尾(rear)之分,队尾指向插入的元素,队头指向删除的元素。解题思路:两个栈实现一个队列的先进先出操作。要把一个栈A作为插入(进队),一个栈B作为删除(出队)。插入的时候,就相当于栈的插入,删除的时候,先判断栈B是否为空,如果不为空,则表明...原创 2019-04-01 22:14:52 · 144 阅读 · 0 评论 -
算法刷题--二叉树的前序中序后序广度深度遍历方法
前中后序遍历可以用一个递归直接得出。前序:先输出root,然后对左右节点进行递归输出。public void preOrderTraverse1(TreeNode root) { if (root != null) { System.out.print(root.val+" "); preOrderTraver...原创 2019-05-30 14:20:22 · 91 阅读 · 0 评论