09 2016 档案
摘要:题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路:看到这道题思路是有的,构造一个函数,输入一个节点,通过左右孩子节点返回的深度,判断左右孩子的深度是否满足相差不超过一,并且左右孩子都是平衡二叉树,则把左右孩子较深的那个加一返回。 可是并不太明白如和返回两个返回值。 后来看了解析才明白,
阅读全文
摘要:题目描述 输入两个链表,找出它们的第一个公共结点。 这个题本来是不准备发博客的,因为太简单了... 思路一:大致思路是先分别求出他们的长度,然后让长的先走差值步数。然后长的短的一起走,第一次相遇的节点就是结果 上代码 /* public class ListNode { int val; ListN
阅读全文
摘要:题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,siz
阅读全文
摘要:题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 反思:我发现有些题目,你如果不是之商超群的那一类人,如果不经过大量的训练是很难做出来的(也可能是自己智商该充值
阅读全文
摘要:题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 这道题目比较数组组成字符之后的大小,所以很自然的想到了大数问题。所以整个过程都要使用字符串来比较和保存。 思路:
阅读全文
摘要:题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解析:方法一:这道题最low的解法是,用一个hashmap存起来,最后检查 如
阅读全文
摘要:题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 这个题
阅读全文
摘要:题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 这道题我本身的思路也是递归,但是整个过程没有用到返回值,不知道为什么我总是不太会用返回值.......。 具体过程 main函数的作用是 找到当前参数节点的左子树的 最大值(
阅读全文
摘要:题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 这个题有两种解法,第一种是用hashmap把原表random(随机指针)对
阅读全文
摘要:题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeN
阅读全文
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 public class Solution { public void reOrderArray(int [] ar
阅读全文
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 public class Solution { public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1); } r
阅读全文
摘要:题目描述 Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the neare
阅读全文
摘要:题目描述 有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。 测试样例: {1,2,3},{3,2,1}
阅读全文
摘要:这道题一定要注意总结规律,得到规律如下 N为这个矩阵的阶数,那个arr[i][j]旋转之后的位置是arr[j][N-1-i] 那么这道题如果可以使用额外数组,那么两重循环即可,如果不允许使用缓存矩阵,那么怎么办呢? 如图所示,把这个正方形看成一个洋葱,一层一层看(每一层包括上下左右四个边),第一层先
阅读全文
摘要:注意几点: 1.在获取字符串的每一位的时候可以使用 toCharArray() 和str.charAt(i)两种方式 2.char类型能自动转换成int类型。会将char类型转换成字符对应的的ascii码 3.int[] str1=new int[256] 全局变量没有初始值默认为0,如果是int[
阅读全文
摘要:对于一个链表,我们需要用一个特定阈值完成对它的分化,使得小于等于这个值的结点移到前面,大于该值的结点在后面,同时保证两类结点内部的位置关系不变。 给定一个链表的头结点head,同时给定阈值val,请返回一个链表,使小于等于它的结点在前,大于等于它的在后,保证结点值不重复。 测试样例: 需要注意的地方
阅读全文
摘要:题目描述 C市现在要转移一批罪犯到D市,C市有n名罪犯,按照入狱时间有顺序,另外每个罪犯有一个罪行值,值越大罪越重。现在为了方便管理,市长决定转移入狱时间连续的c名犯人,同时要求转移犯人的罪行值之和不超过t,问有多少种选择的方式? 输入描述: 第一行数据三个整数:n,t,c(1≤n≤2e5,0≤t≤
阅读全文
摘要:解题思路和代码原型来源于牛课网, 我自己实现了一遍,添加了部分注释
阅读全文

浙公网安备 33010602011771号