候着
sjphiChina
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。
展开
-
Game of Life
对于这种题,真要遇上了就认命了。参考点击打开链接,后续的问答,继续关注。这道题,关键在于能想到,状态转变0 : 上一轮是0,这一轮过后还是01 : 上一轮是1,这一轮过后还是12 : 上一轮是1,这一轮过后变为03 : 上一轮是0,这一轮过后变为1另外,每次比较都是和上一轮状态的比较。还有,这样写,不是自己想要的结果://lives = lives + boa原创 2016-06-24 15:59:56 · 283 阅读 · 0 评论 -
Repeated DNA Sequences
用map就好了,不用一开始还想得两层for循环,至于bit做法,之后看另外,是public class Solution { public List findRepeatedDnaSequences(String s) { List list = new LinkedList<>(); if (s == null || s.length() < 10原创 2016-06-18 08:38:53 · 218 阅读 · 0 评论 -
Binary Tree Upside Down
这个就当还没做过Binary Tree Upside Down原创 2016-06-18 14:45:06 · 237 阅读 · 0 评论 -
Single Number
判断两个,可以先加set,然后再从set里删掉啊!!bit之后做。public class Solution { public int singleNumber(int[] nums) { Set set = new HashSet<>(); for (int n: nums) { if (!set.add(n)) {原创 2016-06-18 15:05:21 · 174 阅读 · 0 评论 -
Single Number II
好吧,就先当做凑数。public class Solution { public int singleNumber(int[] nums) { Map map = new HashMap<>(); for (int n: nums) { if (map.containsKey(n)) { if (m原创 2016-06-18 15:12:39 · 209 阅读 · 0 评论 -
Counting Bits
先贴出一种自己马上写出的,更好的做法之后补上 public int[] countBits(int num) { if (num == 0) { return new int[]{0}; } int[] res = new int[num + 1]; for (int i = 1; i <= num;原创 2016-07-26 16:35:41 · 209 阅读 · 0 评论 -
Top K Frequent Elements
先贴出用了heap的做法,稍后要学会用桶排序来做。public class Solution { public List topKFrequent(int[] nums, int k) { List res = new LinkedList<>(); if (nums == null || nums.length == 0) {原创 2016-07-26 17:36:12 · 225 阅读 · 0 评论 -
Design Tic-Tac-Toe
巩固矩阵的操作,尤其是对角线的操作。之后处理follow uppublic class TicTacToe { int[][] matrix; /** Initialize your data structure here. */ public TicTacToe(int n) { matrix = new int[n][n]; }原创 2016-07-27 04:19:15 · 368 阅读 · 0 评论 -
Largest BST Subtree
对于O(n)的方法,我们之后处理。这里是nlong(n)的方法,当中验证bst的思路很好。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x原创 2016-06-19 20:11:32 · 445 阅读 · 0 评论 -
Zigzag Iterator
很好的参考点击打开链接,对其实是两个iterator的利用,对于follow up,之后看public class ZigzagIterator { Iterator it1 = null; Iterator it2 = null; int turn = 0; public ZigzagIterator(List v1, List v2) {原创 2016-06-19 20:51:31 · 329 阅读 · 0 评论 -
Permutation Sequence
此题,我不要求用最好的数学解法,现在只求最基本的,能bug free!!!!!!!public static String getPermutation(int n, int k) { int[] array = new int[n]; for (int i = 0; i < n; i++) { array[i] = i + 1;原创 2016-06-20 07:53:16 · 207 阅读 · 0 评论 -
Sort List
掌握此归并排序list,对于快排,之后熟悉。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution {原创 2016-06-22 23:25:33 · 239 阅读 · 0 评论 -
Reverse Bits
参考:点击打开链接follow up 以后再看public int get(int n) { int res = 0; for (int i = 0; i >= 1) { res = res << 1 | (n & 1) }}原创 2016-07-24 14:09:27 · 199 阅读 · 0 评论 -
Find K Pairs with Smallest Sums
先上一个最笨的方法,上完课再继续优化public class Solution { public List kSmallestPairs(int[] nums1, int[] nums2, int k) { List res = new LinkedList<>(); if (nums1 == null || nums2 == null ||原创 2016-07-24 06:55:01 · 201 阅读 · 0 评论 -
Design Twitter
看了网上其他人的做法,感觉如果,不设计特别的user和tweet类,自己的做法是最优的。但当中瓶颈出在第一次对tweetList的遍历,如果tweetList很大,而且前面的tweet都是无关的,会有很大的时间浪费。如果,设计了user和tweet类,就只遍历相关的tweet,会省不少时间。这个如果遇到了,就问清楚,到底要一个简单能用的,还是复杂完备的设计。public class Twitt原创 2016-06-24 18:57:58 · 348 阅读 · 0 评论 -
Copy List with Random Pointer
两次遍历。请一定要明白每次从map取出的value是啥,不要搞混啊。/** * Definition for singly-linked list with a random pointer. * class RandomListNode { * int label; * RandomListNode next, random; * RandomListNod原创 2016-06-24 22:00:55 · 241 阅读 · 0 评论 -
Symmetric Tree
基本功:至于非递归解法,先压着,之后解决/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */p原创 2016-06-08 22:50:58 · 309 阅读 · 0 评论 -
Add Digits
为啥今天访问csdn这么糟糕!!!!!!!自己可以不会最优的做法,但是num本身取模,相除来得到自身数字的方法一定得熟练掌握,而不能总想着用String来偷懒,最优参考点击打开链接public class Solution { public int addDigits(int num) { while (num > 9) { int te原创 2016-06-09 12:40:38 · 210 阅读 · 0 评论 -
Rotate Array
我们就先给出最基本的了,至于另外两种,以后研习。但就是最基本的,还错了两次public class Solution { public void rotate(int[] nums, int k) { if (nums == null || nums.length < 2 || k == 0) { return; }原创 2016-06-09 12:47:08 · 242 阅读 · 0 评论 -
Intersection of Two Arrays II
这道题的非排序做法值得自己再好好看看,尤其是while循环中的三个条件非排序public class Solution { public int[] intersect(int[] nums1, int[] nums2) { int [] result = new int[0]; if (nums1 == null || nums1.length == 0 || nums2原创 2016-06-10 03:12:05 · 219 阅读 · 0 评论 -
Number of Islands
新知,扫描整个grid,将1的周围都设为0(dfs),这样有几个1,就有几个岛至于用union-find的解法,之后研习好了,可以先去吃午饭了public class Solution { public int numIslands(char[][] grid) { int num = 0; if (grid == null || grid.le原创 2016-06-11 03:19:11 · 307 阅读 · 0 评论 -
Graph Valid Tree
这道题我们之后要用并查集来做,现在用的是bfs。这个要联系graph clone那道题。注意题目声明的是无向图,所以第二个for循环,必须得初始化两个值,[2, 0], [2, 1],是许可的。注意这个for的写法:for (int i: neighbors) { if(!set.contains(i)) qu原创 2016-06-13 11:56:19 · 364 阅读 · 0 评论 -
Kth Largest Element in an Array
这道题我们先用heap做了,之后再用排序的方法处理。public class Solution { public int findKthLargest(int[] nums, int k) { PriorityQueue queue = new PriorityQueue<>(); for (int i : nums) { queue.offer(原创 2016-06-14 04:05:42 · 214 阅读 · 0 评论 -
H-Index
这个有空再看看非排序的做法吧。参考:点击打开链接public class Solution { public int hIndex(int[] citations) { Arrays.sort(citations); int max = 0; for (int i = 0; i < citations.length; i++) {原创 2016-06-14 13:40:59 · 297 阅读 · 0 评论 -
Two Sum II - Input array is sorted
这道题固然用两根指针能做,自己之后还要想一下二叉做法,候着吧。public class Solution { public int[] twoSum(int[] numbers, int target) { int [] result = new int[2]; if (numbers == null || numbers.length < 2) {原创 2016-06-15 16:15:44 · 279 阅读 · 0 评论 -
Verify Preorder Sequence in Binary Search Tree
一道很好的拓展题,对于follow up,我们之后继续看。参考:点击打开链接public class Solution { public boolean verifyPreorder(int[] preorder) { int min = Integer.MIN_VALUE; Stack stack = new Stack<>();原创 2016-06-23 15:12:51 · 266 阅读 · 0 评论