- 博客(83)
- 收藏
- 关注
原创 山东大学 机器学习 实验报告 实验1 模式分类 上机练习
作业:P64,2.5节,4:考虑上机题2中的3个类别,设p(wi)=1/3(a)以下各测试点与上机练习2中各类别均值间的Mahalanobis距离分别是多少:(1,2,1)t,(5,3,2)t,(0,0,0)t,(1,0,0)t(b)对以上各点进行分类。 (c)若设p(w1)=0.8,p(w2)=p(w3)=0.1,再对以上测试点进行分类。...
2019-10-26 12:12:00 1087
原创 codeforce F. Multicolored Markers
http://codeforces.com/contest/1029/problem/F这道题真的一点都不难……………………………………………………对于大矩形面积a+b,从差距最小的因数开始遍历,直到遇到第一个a、b中的任何一个,能变成一个矩形并能放在大矩形中(因为最后的大矩形的面积一定等于a+b,所以剩余空间一定可以填补),我们就找到了解。 1 ...
2019-10-23 00:11:00 203
原创 codeforce D. Concatenated Multiples
http://codeforces.com/contest/1029/problem/D看C题的第一眼就觉得自己一定能做出来,结果就兴致勃勃地做了一天,最后做出来了。但看到这道题时,第一感觉就是“好难啊,我肯定做不出来,而且还是数学题,我从没做出过一道数学题”,默念1分钟丧气话,1分钟后正式放弃了。我很惊讶,1天的时间不能让我放弃,1分钟却让因为刚通过C题十分兴...
2019-10-22 13:35:00 178
原创 codeforce C. Maximal Intersection
http://codeforces.com/contest/1029/problem/C从第一天吃晚饭做到第二天吃完饭……你无法想象我的代码曾经150行 o( ̄┰ ̄*)ゞ找到所有线段最远的左边和最近的右边,当一个线段的左边或右边与上述重合就尝试删除。 1 import java.util.Arrays; 2 import java.util.S...
2019-10-21 18:38:00 145
原创 codeforce A. Many Equal Substrings
http://codeforces.com/contest/1029/problem/A嗳,简单的题做起来是真的舒服qwq 1 public static void main(String[] args) { 2 Scanner io=new Scanner(System.in); 3 int n=io.nextIn...
2019-10-20 23:46:00 124
原创 codeforce B. Creating the Contest
http://codeforces.com/contest/1029/problem/B水题真快乐= = 1 public class Main { 2 public static void main(String[] args) { 3 Scanner io = new Scanner(System.in); 4 ...
2019-10-20 23:45:00 115
原创 leetcode 30. 串联所有单词的子串 【时间击败 90.28%】 【内存击败 97.44%】
这道题让我从早做到晚-3-……设len=words[0].length()。一开始我按照words的顺序扩大区间,发现这样就依赖words的顺序。之后改成遍历s的所有长度为len*words.length的区间,超时,因为没有重复利用信息,只是单纯的暴力,每次i++移动一个单位是无法重复利用信息的。要重复利用,只能每次移动len,这是能遍历所有情况的,以0~...
2019-10-20 22:18:00 103
原创 leetcode 31. 下一个排列 【时间击败 100%】 【内存击败 92.17%】
对于该题,我本来兴致勃勃地想到了两个优化,但从提交结果来看根本看不出来有什么区别,但我发4我说的都是真的 -3- 1 public void nextPermutation(int[] nums) { 2 if (nums.length <= 1) return; 3 4 for (int s = nums.len...
2019-10-20 22:18:00 124
原创 LeetCode 29. 两数相除 时间击败【100.00%】 内存击败【76.25%】
不禁让我想起了计算机是怎样进行除法运算的,单独考虑溢出以及边界情况,单独考虑符号,其他过程和我们小学除法是一模一样的:左移除数(十进制就是扩大十倍,二进制扩大两倍),直到正好比被除数小,一边累加商(在我的代码里就是33行)一边减小被除数,直到被除数不能减小,右移除数,重复上述过程。 1 public int divide(int dividend, int divis...
2019-10-20 08:23:00 188
原创 有符号数 无符号数 原码 补码 反码 java用补码表示
计算机数字的储存分为:1、无符号数,2、有符号数无符号数:只能表示正数。每一位数都代表2的幂次方。只有地址用无符号数,无符号数不进行算术操作,之进行指针的加减。地址并不会造成错误的结果,而是产生一个空操作(气泡),所以无符号数不考虑溢出。有符号数:可以表示负数。有符号数有三种表示法:1、原码,2、补码(计算机系统中,数值一律用补码来表示和存储),3、反码...
2019-10-08 14:08:00 516
原创 leetcode 27. 移除元素 【时间击败100.00%】【内存击败84.67%】
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 ...
2019-09-30 22:14:00 103
原创 Java 堆排序
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 ...
2019-09-26 09:37:00 78
原创 牛客 二叉树中和为某一值的路径 【时间19ms】【内存9560k】
https://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca构造函数:new ArrayList(al)把al的所有值复制到 new ArrayList()里,并且 new ArrayList()的值不会随着al的改变而改变。al0.addAll(al):当al的值改变,al0的值也随之改变。...
2019-09-25 23:29:00 96
原创 leetcode 98. 验证二叉搜索树 【一遍dfs】【时间击败99.72%】【内存击败94.23%】
复用left[],【时间击败73.33%】——》【时间击败99.72%】【内存击败36.17%】——》【内存击败94.23%】dfs(r)返回值=new long[]{包括r节点的子树所有节点的最小值,包括r节点的子树所有节点的最大值} 1 boolean ans = true; 2 3 public boolean isValid...
2019-09-25 17:03:00 107
原创 leetcode 94. 二叉树的中序遍历【时间击败99.19%】 【内存击败39.48%】
public List<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer>al=new ArrayList<>(); if (root==null)return al; al.addAll(inorderTravers...
2019-09-25 11:53:00 92
原创 leetcode 814. 二叉树剪枝 【时间击败100.00%】【 内存击败84.62%】
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 ...
2019-09-25 11:35:00 87
原创 leetcode 655. 输出二叉树 【时间击败100.00%】 【内存击败96.49%】
1 public List<List<String>> printTree(TreeNode root) { 2 ArrayList<List<String>> al = new ArrayList<>(); 3 if (root == null) return al; 4 ...
2019-09-25 11:00:00 134
原创 leetcode 310. 最小高度树 【时间击败70.67%】 【内存击败89.04%】
数组替代队列,从超时到击败70%,用tree[0]替代new一个新的ArrayList,上升10%思想是遍历一遍,删除度为1的节点,答案只可能为1或2 1 public List<Integer> findMinHeightTrees(int n, int[][] edges) { 2 ArrayList<Integer...
2019-09-25 09:58:00 206
原创 leetcode 538. 把二叉搜索树转换为累加树
执行用时 :973 ms, 在所有Java提交中击败了5.44%的用户内存消耗 :39.4 MB, 在所有Java提交中击败了92.13%的用户有个题解莫名其妙,连个if判断都没有,改下样例就错了,代码的意思就是把节点的值改成其和右子树的和……这不对嘛。- -我已贡献一个样例,真不知道他是怎么过的。思路是:dfs遍历树的所有节点,遇到一个节点add()算出...
2019-09-24 11:35:00 117
原创 leetcode 538. 把二叉搜索树转换为累加树 【时间击败100.00%】 【内存击败96.46%】...
因为二叉搜索树的左子树<根<右子树的性质,按right-root-left的顺序遍历很容易求出累加和 1 int add = 0; 2 3 public TreeNode convertBST(TreeNode root) { 4 if (root == null) return root; 5 con...
2019-09-24 11:35:00 48
原创 leetcode 100. 相同的树
执行用时 :0 ms, 在所有Java提交中击败了100.00%的用户内存消耗 :34.3 MB, 在所有Java提交中击败了83.99%的用户 1 public boolean isSameTree(TreeNode p, TreeNode q) { 2 if (p==null&&q==null)return true;...
2019-09-24 10:22:00 85
原创 leetcode 100. 相同的树【 时间击败100.00%】 【内存击败83.99%】
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 ...
2019-09-24 10:22:00 47
原创 leetcode 572. 另一个树的子树
执行用时 :12 ms, 在所有Java提交中击败了88.10%的用户内存消耗 :39.3 MB, 在所有Java提交中击败了96.40%的用户 1 boolean ans = false; 2 3 public boolean isSubtree(TreeNode s, TreeNode t) { 4 if (t == n...
2019-09-24 10:16:00 78
原创 leetcode 572. 另一个树的子树 【时间击败88.10%】 【内存击败96.40%】
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);...
2019-09-24 10:16:00 54
原创 java中hashmap的实现原理
HashMap底层是一个数组,通过允许冲突来实现大小可扩充。数组的下标是对象的散列码,存储的是list,查询list的时候是线性equals()比较(所以速度的瓶颈在于不能让list过长,也就是数据不能太集中)。放入HashMap的对象要实现2个方法,hashCode()和equals()。equals()正确的实现必须满足5个条件:1、自反性:x.equals(x)必为tr...
2019-09-24 09:51:00 155
原创 Java的int和Integer
java里一切都是对象,对象=引用+对象本身。引用储存在堆栈(RAM)里,因为只有知道生命周期的数据才能存储在堆栈里,对象储存在堆里,因为堆不要求知道数据的生命周期。Java里所有的对象都储存在堆里,当你new的时候堆就会分配空间,但堆的分配和清理慢,如果对于小的简单的基本类型,用引用直接储存值,就可以创建在堆栈中。所以:1、Integer是一个对象,它等于引用+值,引用...
2019-09-23 21:12:00 114
原创 LeetCode 26. 删除排序数组中的重复项
执行用时 :1 ms, 在所有 Java 提交中击败了100.00% 的用户内存消耗 :39.8 MB, 在所有 Java 提交中击败了95.37%的用户 1 public int removeDuplicates(int[] nums) { 2 //返回值len的长度用++方便,因为填充一个值可能删除很多值 3 //初始化为...
2019-09-23 19:27:00 77
原创 LeetCode 26. 删除排序数组中的重复项 【时间击败100.00%】 【内存击败95.37%】
1 public int removeDuplicates(int[] nums) { 2 //返回值len的长度用++方便,因为填充一个值可能删除很多值 3 //初始化为1,填充则len++ 4 int len = 1; 5 OUT: 6 for (int i = 0, p =...
2019-09-23 19:27:00 44
原创 LeetCode 25. K 个一组翻转链表
执行用时 :1 ms, 在所有 Java 提交中击败了99.35% 的用户内存消耗 :38.9 MB, 在所有 Java 提交中击败了74.50%的用户抱歉,我就是交换了值,用数组保存的,没想到过了 -3-…… 1 public ListNode reverseKGroup(ListNode head, int k) { 2 ...
2019-09-23 18:53:00 80
原创 LeetCode 25. K 个一组翻转链表 【时间击败99.35%】 【内存击败74.50%】
抱歉,我就是交换了值,用数组保存的,没想到过了 -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 == null) r...
2019-09-23 18:53:00 61
原创 LeetCode 24. 两两交换链表中的节点
执行用时 :0 ms, 在所有 Java 提交中击败了100.00% 的用户内存消耗 :34.2 MB, 在所有 Java 提交中击败了86.60%的用户 1 public ListNode swapPairs(ListNode head) { 2 if (head == null || head.next == null) return hea...
2019-09-23 18:49:00 79
原创 LeetCode 24. 两两交换链表中的节点 【时间击败100.00%】 【内存击败86.60%】
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; 4 head = ...
2019-09-23 18:49:00 59
原创 LeetCode 23. 合并K个排序链表
执行用时 :4 ms, 在所有 Java 提交中击败了98.35% 的用户内存消耗 :38.9 MB, 在所有 Java 提交中击败了94.11%的用户原本是“逐一两两合并链表”,用时118ms,换成假分治后只用4ms,震惊!代码其实就是把遍历换成了队列……关键代码变化:“分治”:1 static public ListNode mergeK...
2019-09-23 18:17:00 92
原创 LeetCode 23. 合并K个排序链表 【时间击败98.35%】 【内存击败94.11%】
原本是“逐一两两合并链表”,用时118ms,换成假分治后只用4ms,震惊!代码其实就是把遍历换成了队列……关键代码变化:“分治”:1 static public ListNode mergeKLists(ListNode[] lists) {2 if (lists == null || lists.length == 0) return null;...
2019-09-23 18:17:00 54
原创 LeetCode 22. 括号生成
执行用时 :4 ms, 在所有 Java 提交中击败了42.92% 的用户内存消耗 :36.2 MB, 在所有 Java 提交中击败了99.07%的用户f(n)="("+f(n-1)+") +f(i)f(n-i) +f(n-i)f(i)举个例子:f(2)="("+f(1)+")" +"()"f(1) +f(1)"()"...
2019-09-23 17:31:00 71
原创 LeetCode 22. 括号生成 【时间击败42.92%】 【内存击败99.07%】
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 import java.util.List;...
2019-09-23 17:31:00 54
原创 TCP/IP包
包是分组数据包的简称,分组数据包是分组交换协议的结果。分组交换协议就是规定一块大数据被分割成一个个更小的分组数据包,每一个被贴上报文头(包括源地址、目标地址、分组序号),依次传输给目标计算机,目标计算机接收到包后,丢掉报文头,通过报文头里的分组序号(是大块数据的第几个包)恢复完整的大块数据。包的首部除了必要的源地址和目标地址用来表示从这一层的什么地方传输到这一层的什么地方之外,...
2019-09-16 19:45:00 169
原创 TCP/IP层次模型
应用层:是【应用程序】实现的功能,如发送电子邮件的话,把文字用UTF-8编码、设定发送时间等功能都属于应用层,直到点击“发送——建立TCP连接,发送给传输层。传输层:利用TCP协议,将应用层传输过来的数据从一个【程序】发送至另一个计算机的程序里。通过在应用层传输过来的数据上添加一个TCP头,指明源端口号和目标端口号(端口号唯一标识程序,计算机用I...
2019-09-16 19:23:00 132
原创 C. Alyona and the Tree
http://codeforces.com/contest/682/problem/Cdfs,没什么好说的,直接看代码吧 1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 5 public class Main { 6 static long[] a =...
2019-08-28 16:21:00 107
原创 B. Alyona and Mex
http://codeforces.com/contest/682/problem/B1 //超时2 int[]a=new int[n];3 for (int i = 0; i < n; i++) a[i]=io.nextInt();4 Arrays.sort(a);5 ...
2019-08-28 12:56:00 128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人