09 2019 档案

摘要:1 public int removeElement(int[] nums, int val) { 2 int last = nums.length - 1; 3 for (int i = 0; i <= last && last >= 0; i++) { 4 while (last >= 0 && nums[last] == val) last--; 5 if (last >= 0 && i < 阅读全文
posted @ 2019-09-30 22:14 dodoBehind 阅读(168) 评论(0) 推荐(0)
摘要:1 public class HeapSort { 2 public static void main(String[] args) { 3 int[] a = new int[]{6, 2, 8, 3, 5, 1, 8, 6, 54, 64, -1, 2, 4, 4, 67}; 4 heapSort(a); 5 System.out.println(); 6 } 7 8 static void 阅读全文
posted @ 2019-09-26 09:37 dodoBehind 阅读(169) 评论(0) 推荐(0)
摘要:https://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca 构造函数:new ArrayList(al)把al的所有值复制到 new ArrayList()里,并且 new ArrayList()的值不会随着al的改变而改变。 阅读全文
posted @ 2019-09-25 23:29 dodoBehind 阅读(199) 评论(0) 推荐(0)
摘要:复用left[],【时间击败73.33%】——》【时间击败99.72%】 【内存击败36.17%】——》【内存击败94.23%】 dfs(r)返回值=new long[]{包括r节点的子树所有节点的最小值,包括r节点的子树所有节点的最大值} 阅读全文
posted @ 2019-09-25 17:03 dodoBehind 阅读(211) 评论(0) 推荐(0)
摘要:public List<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer>al=new ArrayList<>(); if (root==null)return al; al.addAll(inorderTraversal(root.left)); al.add(root.val); al.addAll(inorderTrav 阅读全文
posted @ 2019-09-25 11:53 dodoBehind 阅读(127) 评论(0) 推荐(0)
摘要:1 public TreeNode pruneTree(TreeNode root) { 2 dfs(root,null,-1); 3 return root; 4 } 5 6 public void dfs(TreeNode cur, TreeNode fa, int left) { 7 if (cur == null) return; 8 if (check(cur)) { 9 if (lef 阅读全文
posted @ 2019-09-25 11:35 dodoBehind 阅读(149) 评论(0) 推荐(0)
摘要:1 public List> printTree(TreeNode root) { 2 ArrayList> al = new ArrayList(); 3 if (root == null) return al; 4 if (root.left == null && root.right == null) { 5 ... 阅读全文
posted @ 2019-09-25 11:00 dodoBehind 阅读(195) 评论(0) 推荐(0)
摘要:数组替代队列,从超时到击败70%,用tree[0]替代new一个新的ArrayList,上升10% 思想是遍历一遍,删除度为1的节点,答案只可能为1或2 阅读全文
posted @ 2019-09-25 09:58 dodoBehind 阅读(206) 评论(0) 推荐(0)
摘要:因为二叉搜索树的左子树<根<右子树的性质,按right-root-left的顺序遍历很容易求出累加和 阅读全文
posted @ 2019-09-24 11:35 dodoBehind 阅读(153) 评论(0) 推荐(0)
摘要:1 public boolean isSameTree(TreeNode p, TreeNode q) { 2 if (p==null&&q==null)return true; 3 if (p==null||q==null)return false; 4 return check(p, q); 5 } 6 7 ... 阅读全文
posted @ 2019-09-24 10:22 dodoBehind 阅读(188) 评论(0) 推荐(0)
摘要:1 boolean ans = false; 2 3 public boolean isSubtree(TreeNode s, TreeNode t) { 4 if (t == null) return true; 5 if (s == null) return false; 6 dfs(s, t); 7 ... 阅读全文
posted @ 2019-09-24 10:16 dodoBehind 阅读(141) 评论(0) 推荐(0)
摘要:HashMap底层是一个数组,通过允许冲突来实现大小可扩充。数组的下标是对象的散列码,存储的是list,查询list的时候是线性equals()比较(所以速度的瓶颈在于不能让list过长,也就是数据不能太集中)。 放入HashMap的对象要实现2个方法,hashCode()和equals()。 eq 阅读全文
posted @ 2019-09-24 09:51 dodoBehind 阅读(195) 评论(0) 推荐(0)
摘要:java里一切都是对象,对象=引用+对象本身。 引用储存在堆栈(RAM)里,因为只有知道生命周期的数据才能存储在堆栈里,对象储存在堆里,因为堆不要求知道数据的生命周期。 Java里所有的对象都储存在堆里,当你new的时候堆就会分配空间,但堆的分配和清理慢,如果对于小的简单的基本类型,用引用直接储存值 阅读全文
posted @ 2019-09-23 21:12 dodoBehind 阅读(254) 评论(0) 推荐(0)
摘要:1 public int removeDuplicates(int[] nums) { 2 //返回值len的长度用++方便,因为填充一个值可能删除很多值 3 //初始化为1,填充则len++ 4 int len = 1; 5 OUT: 6 for (int i = 0, p = 0; i < nu 阅读全文
posted @ 2019-09-23 19:27 dodoBehind 阅读(164) 评论(0) 推荐(0)
摘要:抱歉,我就是交换了值,用数组保存的,没想到过了 -3-…… 1 public ListNode reverseKGroup(ListNode head, int k) { 2 ListNode p = head, p2 = p; 3 int[]a=new int[k]; 4 5 if (p == n 阅读全文
posted @ 2019-09-23 18:53 dodoBehind 阅读(170) 评论(0) 推荐(0)
摘要:1 public ListNode swapPairs(ListNode head) { 2 if (head == null || head.next == null) return head; 3 ListNode a = head, b = head.next, c, last = null; 阅读全文
posted @ 2019-09-23 18:49 dodoBehind 阅读(163) 评论(0) 推荐(0)
摘要:原本是“逐一两两合并链表”,用时118ms,换成假分治后只用4ms,震惊!代码其实就是把遍历换成了队列…… 关键代码变化: “分治”: 1 static public ListNode mergeKLists(ListNode[] lists) { 2 if (lists == null || li 阅读全文
posted @ 2019-09-23 18:17 dodoBehind 阅读(143) 评论(0) 推荐(0)
摘要:f(n)="("+f(n-1)+") +f(i)f(n-i) +f(n-i)f(i) 举个例子: f(2)="("+f(1)+")" +"()"f(1) +f(1)"()" 1 import java.util.ArrayList; 2 import java.util.HashSet; 3 imp 阅读全文
posted @ 2019-09-23 17:31 dodoBehind 阅读(161) 评论(0) 推荐(0)
摘要:包是分组数据包的简称,分组数据包是分组交换协议的结果。分组交换协议就是规定一块大数据被分割成一个个更小的分组数据包,每一个被贴上报文头(包括源地址、目标地址、分组序号),依次传输给目标计算机,目标计算机接收到包后,丢掉报文头,通过报文头里的分组序号(是大块数据的第几个包)恢复完整的大块数据。 包的首 阅读全文
posted @ 2019-09-16 19:45 dodoBehind 阅读(353) 评论(0) 推荐(0)
摘要:应用层:<!--?xml:namespace prefix = "o" ns = "urn:schemas-microsoft-com:office:office" /--> 是【应用程序】实现的功能,如发送电子邮件的话,把文字用UTF-8编码、设定发送时间等功能都属于应用层,直到点击“发送——建立 阅读全文
posted @ 2019-09-16 19:23 dodoBehind 阅读(415) 评论(0) 推荐(0)