随笔分类 -  leetcode

上一页 1 2 3 4 5 6 ··· 8 下一页
leetcode刷题记录
摘要:用哈希表 public int longestConsecutive(int[] nums) { //未排序的数组,先进行排序再进行遍历???光排序就是O(n2)的时间复杂度了吧。 //还有啥办法 //加入哈希map,比较有没有与当前数字连续的键,如果有就进行添加,按顺序。但是这样的话,并不能一下子 阅读全文
posted @ 2020-07-09 11:08 欣姐姐 阅读(121) 评论(0) 推荐(0)
摘要:自己想复杂了,虽然意识到了是什么问题,但是处理的过程复杂化了 public boolean search(int[] nums, int target) { int first = 0,last = nums.length; while(first != last){ int mid = first 阅读全文
posted @ 2020-07-08 17:12 欣姐姐 阅读(143) 评论(0) 推荐(0)
摘要:完成,还算顺利 public List<List<String>> groupAnagrams(String[] strs) { //将第一个字符串放进一个数组,之后与前面的组的第一个字符串做比较, // 当出现新的字符的时候,就添加一个新的数组进去, // 依次类推,直到遍历结束,返回结果 //字 阅读全文
posted @ 2020-07-08 10:51 欣姐姐 阅读(226) 评论(0) 推荐(0)
摘要:应该是用各种排序算法都行的吧 但是效果并不是很好,是可以优化的吧。 public void sortColors(int[] nums) { int n = nums.length; for(int i = 0;i<n;i++){ for(int j =i;j<n;j++){ if(nums[i]> 阅读全文
posted @ 2020-07-06 09:23 欣姐姐 阅读(142) 评论(0) 推荐(0)
摘要:自己哼哧哼哧做了好久,两个多小时,终于完成了。。。 public boolean isMatch(String s, String p) { //对p进行预处理 int j = 0; while (j+1<p.length()){ if(p.charAt(j) == '*' && p.charAt( 阅读全文
posted @ 2020-07-05 17:34 欣姐姐 阅读(170) 评论(0) 推荐(0)
摘要:还可以; public void merge(int[] nums1, int m, int[] nums2, int n) { if(m == 0){ if (n >= 0) System.arraycopy(nums2, 0, nums1, 0, n); return; } int k = nu 阅读全文
posted @ 2020-07-03 11:31 欣姐姐 阅读(160) 评论(0) 推荐(0)
摘要:虽然做出来了,但是好像效果并不是很好。。 public Node connect(Node root) { if(root == null){ return null; } //构建一个队列 Queue<Node> queue = new ArrayDeque<>(); queue.add(root 阅读全文
posted @ 2020-07-03 10:20 欣姐姐 阅读(205) 评论(0) 推荐(0)
摘要:我是将链表转成了数组,然后就变成和108题是一样的了。 但是效果并不是很好。 public TreeNode sortedListToBST(ListNode head) { ArrayList<Integer> list = new ArrayList<>(); if(head == null) 阅读全文
posted @ 2020-07-02 11:07 欣姐姐 阅读(162) 评论(0) 推荐(0)
摘要:不是我自己写出来的,思想大概是懂的,没自己写,看了别人的代码; public List<TreeNode> generateTrees(int n) { if(n == 0){ return new LinkedList<>(); } return generate_trees(1,n); } pr 阅读全文
posted @ 2020-07-01 21:27 欣姐姐 阅读(145) 评论(0) 推荐(0)
摘要:还可以,自己做得出来。 public TreeNode buildTree(int[] inorder, int[] postorder) { //用一个map来存储中序 int n = inorder.length; if(n == 0){ return null; }else if(n == 1 阅读全文
posted @ 2020-07-01 20:09 欣姐姐 阅读(182) 评论(0) 推荐(0)
摘要:public Node connect(Node root) { if(root == null){ return root; } Queue<Node> Q = new LinkedList<>(); Q.add(root); while (Q.size() > 0){ int size = Q. 阅读全文
posted @ 2020-07-01 17:21 欣姐姐 阅读(233) 评论(0) 推荐(0)
摘要:先中序遍历,对中序遍历得到的数组进行排序,将排序之后的数组与排序之前的数组比较,就可以找到是哪两个数进行了交换。 再中序遍历二叉树进行节点的值的交换,得到结果。 但是写得不够简洁,性能并不怎么样。 public void recoverTree(TreeNode root) { ArrayList< 阅读全文
posted @ 2020-07-01 11:28 欣姐姐 阅读(154) 评论(0) 推荐(0)
摘要:public List<List<Integer>> zigzagLevelOrder(TreeNode root) { if(root == null){ return new ArrayList<>(); } List<List<Integer>> results = new ArrayList 阅读全文
posted @ 2020-07-01 10:02 欣姐姐 阅读(201) 评论(0) 推荐(0)
摘要:public List<List<Integer>> levelOrderBottom(TreeNode root) { LinkedList<List<Integer>> res = new LinkedList<>(); if(root == null){ return res; } Queue 阅读全文
posted @ 2020-06-30 16:29 欣姐姐 阅读(161) 评论(0) 推荐(0)
摘要:这道题自己完成的,不难。 回溯。 public boolean exist(char[][] board, String word) { int m = board.length; int n = board[0].length; int wordLength = word.length(); if 阅读全文
posted @ 2020-06-30 10:56 欣姐姐 阅读(141) 评论(0) 推荐(0)
摘要:看了大佬的题解,茅塞顿开 public void solveSudoku(char[][] board) { if(board == null || board.length != 9 || board[0] == null || board[0].length != 9){ return; } b 阅读全文
posted @ 2020-06-30 10:08 欣姐姐 阅读(127) 评论(0) 推荐(0)
摘要:public List<String> restoreIpAddresses(String s) { int len = s.length(); List<String> res = new ArrayList<>(); if(len<4 ||len>12) { return res; } Dequ 阅读全文
posted @ 2020-06-29 10:06 欣姐姐 阅读(135) 评论(0) 推荐(0)
摘要:public List<List<String>> partition(String s) { int len = s.length(); List<List<String>> totalList = new ArrayList<>(); if(len == 0){ return totalList 阅读全文
posted @ 2020-06-28 15:29 欣姐姐 阅读(151) 评论(0) 推荐(0)
摘要:这道题的动态规划,我自己没有想清楚,看了答案之后才恍然大悟,不难。 public boolean wordBreak(String s, List<String> wordDict) { boolean[] f = new boolean[s.length()+1]; f[0] = true; fo 阅读全文
posted @ 2020-06-27 21:45 欣姐姐 阅读(106) 评论(0) 推荐(0)
摘要:还好做出来了,就是慢了点。 public int numDistinct(String s, String t) { int m = s.length(); int n = t.length(); if(m<n){ return 0; }else if(m ==n){ if(s.equals(t)) 阅读全文
posted @ 2020-06-27 17:36 欣姐姐 阅读(86) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 ··· 8 下一页