随笔分类 -  leetcode

上一页 1 2 3 4 5 6 7 下一页

189.Rotate Array
摘要:题目链接 题目大意:与61题翻转链表有相似之处,只是一个是链表一个是数组。而数组翻转可以模拟矩阵翻转来做。 法一:将前面的数组翻转一次,后面的数组翻转一次,最后在整体翻转一次,就可以得到最后的结果。代码如下(耗时1ms): 1 public void rotate(int[] nums, int k 阅读全文

posted @ 2018-06-01 10:57 二十年后20 阅读(153) 评论(0) 推荐(0)

61.Rotate List
摘要:题目链接 题目大意:轮转链表,例子如下: 法一:根据单链表节点个数,来重新确定k值需要轮转的节点个数,然后将链表分割成前面的和后面的链表,然后将两个链表连接起来即可。代码如下(耗时17ms): 1 public ListNode rotateRight(ListNode head, int k) { 阅读全文

posted @ 2018-06-01 10:14 二十年后20 阅读(109) 评论(0) 推荐(0)

60.Permutation Sequence
摘要:题目链接 题目大意:找出n的全排列中的第k个排列。 法一:DFS,遍历前k个排列,输出,超时。代码如下: 1 public String getPermutation(int n, int k) { 2 List<Integer> tmp = new ArrayList<Integer>(); 3 阅读全文

posted @ 2018-05-31 11:54 二十年后20 阅读(107) 评论(0) 推荐(0)

66.Plus One
摘要:题目链接 题目大意:输入十进制数组,组成一个数,在最末位+1,然后输出最后结果。例子如下: 法一:直接用类似大数加法的做法,最末位+1,然后输出最后结果,要注意的是,最后可能有进位,比如999的情况。代码如下(耗时1ms): 1 public int[] plusOne(int[] digits) 阅读全文

posted @ 2018-05-31 09:28 二十年后20 阅读(91) 评论(0) 推荐(0)

206.Reverse Linked List
摘要:题目链接 题目大意:翻转单链表。要求用递归和非递归两种方法。 法一:非递归。直接对原单链表进行循环操作,且不新开辟空间,用头插法即可。代码如下(耗时0ms): 1 public ListNode reverseList(ListNode head) { 2 if(head == null) { 3 阅读全文

posted @ 2018-05-11 11:12 二十年后20 阅读(140) 评论(0) 推荐(0)

94.Binary Tree Inorder Traversal---二叉树中序非递归遍历
摘要:题目链接 题目大意:中序遍历二叉树。先序见144,后序见145。 法一:DFS,没啥说的,就是模板DFS。代码如下(耗时1ms): 1 public List<Integer> inorderTraversal(TreeNode root) { 2 List<Integer> res = new A 阅读全文

posted @ 2018-05-11 10:00 二十年后20 阅读(133) 评论(0) 推荐(0)

106.Construct Binary Tree from Inorder and Postorder Traversal
摘要:题目链接 题目大意:根据中序和后序构建二叉树。 法一:与105类似,只是这里是根据后序来确定根节点。代码如下(耗时15ms): 1 public TreeNode buildTree(int[] inorder, int[] postorder) { 2 if(postorder.length == 阅读全文

posted @ 2018-05-10 16:21 二十年后20 阅读(115) 评论(0) 推荐(0)

105.Construct Binary Tree from Preorder and Inorder Traversal---《剑指offer》面试6
摘要:题目链接 题目大意:根据先序遍历和中序遍历构造二叉树。 法一:DFS。根据模拟步骤,直接从先序和中序数组中找值然后加入二叉树中,即先从先序数组中确定根结点,然后再去中序数组中确定左子树和右子树的长度,然后根据左子树和右子树的长度,去划分先序数组和中序数组,确定左子树和右子树。代码如下(耗时15ms) 阅读全文

posted @ 2018-05-10 11:23 二十年后20 阅读(144) 评论(0) 推荐(0)

110.Balanced Binary Tree---《剑指offer》面试39
摘要:题目链接 题目大意:判断一个二叉树是否是平衡二叉树。 法一:dfs。利用求解二叉树的高度延伸,先计算左子树的高度,再计算右子树的高度,然后两者进行比较。o(nlgn)。代码如下(耗时4ms): 1 public boolean isBalanced(TreeNode root) { 2 if(roo 阅读全文

posted @ 2018-05-09 11:43 二十年后20 阅读(99) 评论(0) 推荐(0)

103.Binary Tree Zigzag Level Order Traversal
摘要:题目链接 题目大意:二叉树层序z字型的方式打印输出,即奇数行正常打印,偶数行倒序打印。例子如下: 法一:利用102的层序遍历,然后用Collections.reverse(list),在偶数行的时候将list翻转即可。代码如下(耗时2ms): 1 public List<List<Integer>> 阅读全文

posted @ 2018-05-08 14:54 二十年后20 阅读(162) 评论(0) 推荐(0)

6.ZigZag Conversion
摘要:题目链接 题目大意:将一个给定字符串转换成z字型,如下所示,给出z字型的行数,然后排成z字型,再按行输出结果。 法一(借鉴):代码如下(耗时59ms): 1 public String convert(String s, int numRows) { 2 if(numRows <= 1) { 3 r 阅读全文

posted @ 2018-05-08 10:45 二十年后20 阅读(157) 评论(0) 推荐(0)

102.Binary Tree Level Order Traversal
摘要:题目链接 题目大意:打印二叉树的层序遍历。 法一:见116的利用队列的层序遍历法的第二种解法。代码如下(耗时3ms): 1 public List<List<Integer>> levelOrder(TreeNode root) { 2 List<List<Integer>> res = new A 阅读全文

posted @ 2018-05-08 09:26 二十年后20 阅读(111) 评论(0) 推荐(0)

117.Populating Next Right Pointers in Each Node II
摘要:题目链接 题目大意:与116题类似,区别是这题的二叉树是普通二叉树,而不是完全二叉树。要求空间复杂度o(1)。例子如下: 法一:直接用116题的层序遍历的办法。代码如下(耗时5ms): 1 public void connect(TreeLinkNode root) { 2 if(root == n 阅读全文

posted @ 2018-04-26 16:10 二十年后20 阅读(135) 评论(0) 推荐(0)

116.Populating Next Right Pointers in Each Node
摘要:题目链接 题目大意:对于完全二叉树的每一层,都形成一个单链表(空间复杂度是o(1))。例子如下: 法一:层序遍历。逐层遍历,形成单链表。代码如下(耗时5ms): 1 public void connect(TreeLinkNode root) { 2 if(root == null) { 3 ret 阅读全文

posted @ 2018-04-25 16:12 二十年后20 阅读(184) 评论(0) 推荐(0)

120.Triangle
摘要:题目链接 题目大意:给出一个三角矩阵,求解从顶端到底端的最短路径和(空间复杂度最好是o(n))。例子如下: 法一:二维DP。dp[i][j]表示第i行第i列,从下到当前位置的最短路径和。公式:dp[i][j] = Math.min(dp[i+1][j], dp[i+1][j+1])+当前值。从下到上 阅读全文

posted @ 2018-04-25 11:22 二十年后20 阅读(152) 评论(0) 推荐(0)

124.Binary Tree Maximum Path Sum
摘要:题目链接 题目大意:找出一个二叉树中的最大路径长度。这个路径是从一个叶子结点到另一个叶子结点的路径长度。例子如下: 法一:DFS。由于是左边一个路径到右边一个路径,经过中间的根连接点,所得到的路径和,所以可以计算每个根节点的左子树和右子树的最大路径和,然后再从中选大者,再与其上一层进行比较。具体代码 阅读全文

posted @ 2018-04-25 10:26 二十年后20 阅读(144) 评论(0) 推荐(0)

125.Valid Palindrome
摘要:题目链接 题目大意:给出一个字符串,判断去除特殊字符和空格后的字符串(只包括字母和数字)是否是回文串。 法一:用辅助数组记录去除了特殊字符和空格后的字符串,然后针对这个辅助数组判断是否是回文串。o(n)。代码如下(耗时9ms): 1 public boolean isPalindrome(Strin 阅读全文

posted @ 2018-04-13 11:13 二十年后20 阅读(136) 评论(0) 推荐(0)

128.Longest Consecutive Sequence
摘要:题目链接 题目大意:给出一个数组,找出其中连续数值最多的长度。例子如下: 法一:o(nlgn)。先排序,然后遍历一遍,查找连续数值,一旦不连续,则更新ma。代码如下(耗时1ms): 1 public int longestConsecutive(int[] nums) { 2 if(nums.len 阅读全文

posted @ 2018-04-12 11:39 二十年后20 阅读(128) 评论(0) 推荐(0)

129.Sum Root to Leaf Numbers
摘要:题目链接 题目大意:给出一个二叉树,从根节点到叶的路径上的数值组成一个int型的数值,将所有路径上的所有数值相加得到最总和。例子如下: 法一:DFS。从根节点到叶节点,在路径上每到达一个节点,则计算出其值,然后DFS进去即可。代码如下(耗时1ms): 1 public int sumNumbers( 阅读全文

posted @ 2018-04-12 11:11 二十年后20 阅读(133) 评论(0) 推荐(0)

132.Palindrome Partitioning II
摘要:题目链接 题目大意:给出一个字符串,对其进行划分,形成所有子串是回文串,找出最小需要划分的次数。比如字符串"aab",最小的划分次数是1,形成"aa","b",都是回文串。 法一:利用131题的DFS,超时。代码如下: 1 private static int dfs(String s, int r 阅读全文

posted @ 2018-04-11 15:38 二十年后20 阅读(119) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 下一页

导航