- 博客(36)
- 收藏
- 关注
原创 HDU4597 play game
alice和bob玩游戏,有两个序列a和b,a和b中都有n个元素,alic和bob依次从a或b序列的最左边或最右边拿走一个树,alice先拿,求alice最后拿到数之和最大是多少。这是一种博奕类的动态规划题目,假设a序列中剩下a_i到a_j之间的数,b序列中剩下b_i到b_j之间的数,alice能拿到的最多数用dp[a_i][a_j][b_i][b_j]这个四维数组表示,此时alice可以那a...
2019-08-14 11:25:44
169
原创 为什么重写equals还要重写hashcode
如果一个类A我们通过它生成三个对象A a1=new A(3,4);A a2=new A(1,2);A a3=new A(1,2);如果我们要比较这三个对象是否相等,肯定得重写equals方法,然后依次比较里面的成员是否相等。只重写equals方法的话我们会得到a1.equals(a2); //为falsea2.equals(a3); //为true这里都没有问题,但是当我们用Ha...
2019-08-12 09:52:09
163
原创 leetcode200岛屿数量/字节跳动组织优化笔试
class Solution { /* 对矩阵中的某个点执行DFS遍历,只要把边界条件写好,对要遍历的1变为0操作就可以了 就和二叉树中DFS一样,只是矩阵变为了四个方向,二叉树是遍历左右子树。这里搜索的时候 只要把1的地方改为0就表示这些地方都已经遍历了。其他为0的地方直接return不执行操作。*/ public int numIslands(char[...
2019-08-10 22:55:32
168
原创 leetcode93题复原IP地址
class Solution { /*对于一个字符串最开始肯定是假设第一段是一个字符,比如2,然后第二段最开始也是一个字符5,第三段也是一个字符5, 第四段是一个字符2,这样cur已经加满了四个地址段,然后我们看现在的pos是不是刚好遍历完,这个时候其实pos还在4的位置并 没有遍历完,所以先return返回这不是一个ip地址不要加入ans中,然后我们把最后加的2移除cur...
2019-08-10 22:32:00
120
原创 HDOJ 1232畅通工程
并查集: 用并查集解决,并查集就是用一个数组表示所有点的连接关系,parent[i]=j表示i的父节点是j,建立并查集的过程首先遍历所有连接关系对,对每个关系对执行并集操作,当两个值的根不相等是,添加其中一个根为另一根的父节点,这样两个集合通过这个共同的根连接为一个集合,最后得到的数组中,如果自己的父节点为自己,说明其独立存在,这样就可以找到有多少个连通分量。import java.util...
2019-08-10 11:41:02
98
原创 抖音红人
抖音工程师想要找到抖音里的红人,假设用户数为N,有M个关注关系对(A,B).(A,B)表示A关注了B,关注关系有传递性。如果一个用户被所有人关注,则是抖音红人。求抖音红人总数。输入:331 2 2 1 2 3输出1import java.util.Scanner;public class douYin { /*用二维数组表示关注关系arr[i][j]=1表示i关注了j,根据输入...
2019-08-09 22:13:43
488
原创 leetcode 31 下一个排列
class Solution { public void nextPermutation(int[] nums) { if(nums==null || nums.length==0){ return ; } //先找到该换的位置 int replace=nums.length-2; w...
2019-07-23 20:24:30
71
原创 leetcode 35搜索插入位置
二分搜索,最后target在某两个数中间的时候返回rightclass Solution { public int searchInsert(int[] nums, int target) { if(target<=nums[0]){ return 0; } else if(target&g...
2019-07-23 20:09:59
71
原创 leetcode 34在排序数组中查找元素的第一个和最后一个位置
两次二分搜索class Solution { public int[] searchRange(int[] nums, int target) { int[] res={-1,-1}; if(nums==null||nums.length==0){ return res; } int start_p...
2019-07-23 19:59:26
69
原创 leetcode 76最小覆盖子串
class Solution { public String minWindow(String s, String t) { Map<Character,Integer> window=new HashMap<>(); Map<Character,Integer> needs=new HashMap<>();...
2019-07-23 17:29:15
123
原创 leetcode 438找到字符串中所有字母异位词
class Solution { public List<Integer> findAnagrams(String s, String p) { List<Integer> res=new ArrayList<>(); int l=0; int r=0; int match=0; ...
2019-07-23 17:28:11
139
原创 leetcode 437路径总和III
两次递归-以根节点为起点的路径之和+不以根节点为起点的路径之和-以当前节点为起点的路径之和+以两个子节点为起点的路径之和/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * ...
2019-07-23 11:38:06
145
原创 leetcode 234 回文链表
从中间分为两个链表,右边链表反转再与左边链表一一比较。快慢指针:fast移两步,slow移一步;要判断fast和fast.next同时不为空反转链表:前面加一个空节点,再用一个临时节点存当前节点的下一个节点,1.当前节点指向上一个空节点;2.上一个空节点右移到当前节点,3.当前节点右移到临时节点。直到当前节点为空。/** * Definition for singly-linked li...
2019-07-23 11:18:14
58
原创 leetcode 226翻转二叉树
递归或迭代迭代是新建一个队列,先将根加入队列,再交换根的左右子节点,再将左右子节点加入队列,直到队列为空。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNod...
2019-07-23 10:44:16
61
原创 leetcode 198打家劫舍
动态规划取当前最大值max与(前两个房屋抢到的最大值+当前房屋的价值)之间的最大值为新的最大值。class Solution { public int rob(int[] nums) { if(nums==null || nums.length==0){ return 0; } int last2Max=0; ...
2019-07-23 10:28:22
120
原创 leetcode 155最小栈
定义成员变量构造方法获取成员变量class MinStack { List<Integer> list=new ArrayList<>(); /** initialize your data structure here. */ public MinStack() { //List<Integer> list=n...
2019-07-23 10:07:10
57
原创 leetcode 141环形链表
用HashSet存放以访问的节点,判断当前节点是否再HashSet中,用set.contains()判断/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; ...
2019-07-23 09:52:59
63
原创 leetcode 104 二叉树的最大深度
递归,当该节点为空时返回0;不为空时则左右子树的最大深度+1./** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } ...
2019-07-23 09:40:10
66
原创 leetcde 101对称二叉树
递归,当两个节点不同时为空或值不一样时为false,当同时为空或值相等时,判断两个节点的子节点是否为镜像。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode...
2019-07-23 09:38:15
73
原创 leetcode 70爬楼梯
爬到第i级台阶的方法=爬到第i-1级台阶方法+爬到第i-2级台阶方法class Solution { public int climbStairs(int n) { if(n==1){ return 1; } //动态规划或斐波那契数列 int[] dp=new int[n]; dp...
2019-07-23 09:15:23
72
原创 Leetcode记录 11盛最多水的容器
思路:用双指针法,左初始为0,右初始为最右边,更新时移动高度值较小的指针向另一端靠拢,更新最大容量。遍历一次class Solution { public int maxArea(int[] height) { int l=0; int r=height.length-1; int max=0; while(l<r)...
2019-07-22 17:13:06
61
原创 Leetcode记录 5最长回文字串
思路:中心扩展法,检测字符串s中每个以i为中心或i和i+1中间为中心的最长回文字串长度,总共需要检查(2n−1)(2n-1)(2n−1)个中心根据长度和i下标得到最长回文字串的左右位置下标,得到子串。时间复杂度:O(n2)O(n^{2})O(n2)class Solution { //中心扩展算法 int get_length(String s,int i,int ...
2019-07-22 16:29:02
64
原创 Leetcode记录 8字符串转换整数
思路:先判断是否有±号,再取整数的第一个下标i,再取最后一个下标j,用str.substring(i,j)得到数字字符串,用num记录数值,遍历数字字符串,将当前数字加入num中,num=num10+cur(num=num10-cur),判断加入当前数字会不会超过最大值用num>=Integer.MAX_VALUE/10 &&cur>7,判断是否会超过最小值用num&...
2019-07-22 15:47:15
84
原创 Leetcode记录 10正则表达式匹配
思路:考虑动态规划,dp[][]矩阵表示s与p部分字符串是否匹配。第一行,当p中为‘ * ’ 时,match[0][i]=match[0][i-2];当p中为’ . '或p中字符等于s中字符时,match[si][pi]=match[si-1][pi-1];当p中为’ * '时,(1) 若 ’ * ‘前面的字符等于s中字符,或’ * ‘前面的字符为’ .’ ,则match[si][p...
2019-07-22 15:03:09
202
原创 Leetcode记录 9题 回文数
思路:可以将整数转字符串Integer.toString(i)/String.valueOf(i)比较,也可以每次取最左边,最右边的值比较。class Solution { public boolean isPalindrome(int x) { if(x<0){ return false; } int te...
2019-07-22 10:42:28
59
原创 Leetcode记录 6题 z字形变换
思路:总共n行,新建n个StringBuilder,依次从上到下给每个StringBuilder赋值,每两列一组,前面一列先从上到下依次赋值,后面一列从倒数第二行依次向上赋值到第二行结束。最后将n个字符串相连。时间复杂度:O(n),n是字符串长度。class Solution { public String convert(String s, int numRows) { ...
2019-07-22 10:20:47
59
原创 Leetcode记录 3题 无重复字符的最长子串
思路:用一个128长度的boolean数组存放所有ASCII码中的符号,初始化都为false表示没有访问过,双指针i,j初始指向0,遍历给定字符串所有字符。如果j所指字符未访问,则将该字符改为已访问,并向右移;否则j访问的字符表示已访问,len取当前长度和j-i的最大值,并且将i移动到和j所指字符重复的字符的位置+1,j++。最后还要比较len取最大值。时间复杂度:O(n)class Sol...
2019-07-22 09:59:10
63
原创 Leetcode记录 2题两数相加
2题 两数相加思路: 新建空链表,遍历两个链表,一位一位加,用upper记录进位,每次添加一个节点都要新建一个newNode,对newNode赋值后再加入到链表l3中,最后记得加完链表之后还要判断upper是否为0,不为0还要在加个节点。节点最后要指向null。最后返回要返回res这个最前面的节点。时间复杂度: O(n) 但每次到新建节点,空间上会复杂点,应该有更好的方案。/** * D...
2019-07-20 23:28:54
117
原创 Leetcode记录 86题分割链表
86题 分割链表**思路:**新建两个链表,两个初始为哑节点,before存放小于x的节点,after存放大于等于x的节点。遍历head链表,最后p2后面记得指向null,p1.next=after.next,返回before.next.**时间复杂度分析:**O(n)/** * Definition for singly-linked list. * public class Lis...
2019-07-20 22:53:21
66
原创 Leetcode记录 228题汇总区间
228题 汇总区间思路:双指针i,j,i初始为0,j初始为1.当j指向位置一直比j-1位置大1时,j向右移,直到不满足条件时,将i到j-1区间值加到列表。再将i指向j,j指向j+1。最后判断最后一个数是否和倒数第二个数连续,不连续的话单独将最后一个数加入列表。时间复杂度分析:O(n)class Solution { void addToList(List<String>...
2019-07-20 22:44:22
94
原创 java判断map中是否存在key值对应的记录
得到key集合,判断是否存在集合中某个key相等Iterator keys=map.keySet().iterators;while(keys.hasNext(){ String key=keys.next(); if("2".equals(key){ 存在; }}利用map.containsKey()方法boolean flay=map.containsKey("2");...
2019-07-18 11:08:18
9817
3
原创 树是怎么集成的
很多机器学习算法都用到了树集成(Tree ensemble)的思想,例如GBDT,XGBoost,RF。但是一直不知道用到多个树是怎么集成的。其实就是将之前的一个树分成多个树,例如原来是先判断是否满足条件1,在分支判断时候满足条件2,这样一直分支下去创建树,现在就是将条件1,条件2分开,树1只用条件1,树2只用条件2,然后每个树分出的叶子节点都有一个预测分数,如果样本x在树1所属的叶子节点分数为s...
2019-07-04 09:50:10
231
原创 Maven中的依赖
Maven中的依赖maven中的项目,用mvn clean install 安装之后就表示会将该maven项目加载到本地仓库中。之前因为maven父项目中的pom.xml文件中的packaging为pom而不是jar或war所以不知道怎么将一个父项目添加为某个项目的依赖。但其实只要是在项目根目录下用mvn clean install 安装就不需要一定要生成jar文件或war文件才能依赖它。其他项...
2019-07-01 19:34:27
90
原创 Rank Pruning算法
Rank Pruning算法来自论文learning with confident example rank pruning for robust classification with noisy labels.
2019-01-14 20:48:05
847
转载 linux中安装软件出错
无法安装wireshark出现以下错误:E:无法获得锁/var/lib/dpkg/lock -open(11:资源暂时不可用)解决方法:用一下命令强行释放锁:sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock...
2018-12-17 19:54:38
356
转载 tensorflow数据集Dataset和估算器Estimator
tensorflow数据集和估算器数据集:一种创建输入管道(即,将数据读入您的程序)的全新方式估算器:一种创建tensorflow模型的高级方式。估算器包括适用于常见机器学习任务的预制模型,不过,您也可以使用它们创建自己的自定义模型。 下面是它们在tensorflow架构内的转配方式。 1.数据集介绍数据集是一种我tensorflow模型创建输入管道的新方式。使用此API...
2018-08-30 10:26:43
987
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人