
LintCode
Jason__Liang
哈尔滨工业大学(威海)14级电子科学与技术学生,写博客的目的是为了记录现在幼稚的代码,并希望有一天能在我面试的时候发挥作用。
展开
-
pytorch lstm crf 代码理解
好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来。原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.youkuaiyun.com/cuihuijun1hao/article/details/79405740https://www.jianshu.com/p/97cb3b6db573至于原理,非常建议...原创 2018-08-17 10:30:17 · 16610 阅读 · 26 评论 -
LintCode 424-逆波兰表达式求值
本人电子系,只为一学生。心喜计算机,小编以怡情。求逆波兰表达式的值。在逆波兰表达法中,其有效的运算符号包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰计数表达。 注意负数的处理,比较麻烦static public int evalRPN(String[] tokens) { // Write your code here Stack<Str原创 2017-04-20 18:24:44 · 547 阅读 · 0 评论 -
LintCode 376-二叉树的路径和
本人电子系,只为一学生。心喜计算机,小编以怡情。好久没写代码,结果惨不忍睹,只提供参考。static public List<List<Integer>> binaryTreePathSum(TreeNode root, int target) { // Write your code here List<List<Integer>> ret=new ArrayLis原创 2017-03-20 22:03:00 · 738 阅读 · 0 评论 -
LintCode 54- 转换字符串到整数
本人电子系,只为一学生。心喜计算机,小编以怡情。public int atoi(String str) { // write your code here //去掉首尾空格,测试认为空格是可以忽略的 str=str.trim(); //先行判断 if(str.length()==0) return 0;原创 2017-02-24 16:14:31 · 431 阅读 · 0 评论 -
LintCode 127-拓扑排序
本人电子系,只为一学生。心喜计算机,小编以怡情。 思路: 1、用字典存储每个节点的入度 2、用队列存储入度为零的节点 3、BFSstatic public ArrayList<DirectedGraphNode> topSort(ArrayList<DirectedGraphNode> graph) { // write your code here原创 2017-02-04 11:01:25 · 439 阅读 · 0 评论 -
LintCode 29-交叉字符串
本人电子系,只为一学生。心喜计算机,小编以怡情。 smallfish_love的博客 这位大神写的很详细!!!建议看这位大神的说明!!!//我的代码public boolean isInterleave(String s1, String s2, String s3) { // write your code here int s1len=s1.leng原创 2017-02-15 20:50:25 · 1264 阅读 · 0 评论 -
LintCode 15-全排列 16-带重复元素的全排列
本人电子系,只为一学生。心喜计算机,小编以怡情。给定一个数字列表,返回其所有可能的排列。全排列注意事项 你可以假设没有重复数字。 样例 给出一个列表[1,2,3],其全排列为: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 注:15题与16题解法是相同的,只要把函数名permute<原创 2017-02-02 16:41:15 · 1884 阅读 · 0 评论 -
LintCode 17-子集 JAVA
本人电子系,只为一学生。心喜计算机,小编以怡情。子集给定一个含不同整数的集合,返回其所有的子集 注意事项 子集中的元素排列必须是非降序的,解集必须不包含重复的子集 样例 如果 S = [1,2,3],有如下的解:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 代码与我另外一篇文章相原创 2017-02-02 16:11:26 · 711 阅读 · 0 评论 -
LintCode 18-带重复元素的子集 JAVA
本人电子系,只为一学生。心喜计算机,小编以怡情。带重复元素的子集给定一个可能具有重复数字的列表,返回其所有可能的子集注意事项 子集中的每个元素都是非降序的 两个子集间的顺序是无关紧要的 解集中不能包含重复子集 样例 如果 S = [1,2,2],一个可能的答案为:[ [2], [1], [1,2,2], [2,2], [1,2], [] ] 思路:原创 2017-02-02 16:00:10 · 1039 阅读 · 0 评论 -
LintCode 33-N皇后问题
本人电子系,只为一学生。心喜计算机,小编以怡情。没什么好讲的,这里给出LintCode能通过的代码 参考书:《算法设计与分析》 李春葆主编 清华大学出版社 43页求解N皇后问题static public ArrayList<ArrayList<String>> solveNQueens(int n) { // write your code here List<原创 2017-02-01 16:45:22 · 663 阅读 · 0 评论 -
LintCode 120-单词接龙 广度优先搜索
本人电子系,只为一学生。心喜计算机,小编以怡情。单词接龙给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列 比如: 每次只能改变一个字母。 变换过程中的中间单词必须在字典中出现。 注意事项 如果没有转换序列则返回0。 所有单词具有相同的长度。 所有单词都只包含小写字母。 样例 给出数据如下: start = “hit” end = “cog”原创 2017-02-01 15:48:20 · 1488 阅读 · 1 评论 -
LintCode 152-组合 回溯法
本人电子系,只为一学生。心喜计算机,小编以怡情。组合组给出两个整数n和k,返回从1……n中选出的k个数的组合。 样例 例如 n = 4 且 k = 2返回的解为:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]关键词:回溯法,非递归算法代码如下static public List<ArrayList<Integer>> combine(int n, int k) {原创 2017-01-30 19:50:46 · 469 阅读 · 0 评论 -
LintCode 135-数字组合 回溯法
本人电子系,只为一学生。心喜计算机,小编以怡情。给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。 例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为: [7],[2,2,3] 注意事项 所有的数字(包括目标数字)均为正整数。 元素组合(a1, a2, … , ak)必须是非降序(ie, a1 ≤ a2 ≤ … ≤原创 2017-01-31 19:23:15 · 767 阅读 · 0 评论 -
LintCode 62-背包问题
本人电子系,只为一学生。心喜计算机,小编以怡情。共用6116ms,一度以为超时。 static public int backPack(int m, int[] A) { // write your code here int visited[][]=new int[A.length+1][m+1]; for(int i=1;i<visit原创 2017-02-14 20:15:54 · 427 阅读 · 0 评论 -
LintCode 132-单词搜索II 深度优先
本人电子系,只为一学生。心喜计算机,小编以怡情。给出一个由小写字母组成的矩阵和一个字典。找出所有同时在字典和矩阵中出现的单词。一个单词可以从矩阵中的任意位置开始,可以向左/右/上/下四个相邻方向移动。样例 给出矩阵: doaf agai dcan 和字典: {“dog”, “dad”, “dgdg”, “can”, “again”}返回 {“dog”, “dad”, “can”, “ag原创 2017-02-22 22:50:50 · 541 阅读 · 0 评论 -
LintCode 185-矩阵的之字型遍历
本人电子系,只为一学生。心喜计算机,小编以怡情。给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历。您在真实的面试中是否遇到过这个题? Yes 样例 对于如下矩阵:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10, 11, 12] ] 返回 [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8,原创 2017-04-21 15:26:02 · 591 阅读 · 0 评论 -
LintCode 407-加一
本人电子系,只为一学生。心喜计算机,小编以怡情。给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。该数字按照大小进行排列,最大的数在列表的最前面。样例 给定 [1,2,3] 表示 123, 返回 [1,2,4].给定 [9,9,9] 表示 999, 返回 [1,0,0,0].static public int[] plusOne(int[] digits) {原创 2017-04-21 22:57:05 · 471 阅读 · 0 评论 -
LintCode 166-倒数第k个节点
《王道数据结构》给出的快慢指针,真是一个不错的好方法啊! static public ListNode nthToLast(ListNode head, int n) { // write your code here ListNode p=head; while(p!=null&&n!=0){ p=p.next;原创 2017-10-29 20:15:12 · 396 阅读 · 0 评论 -
LintCode 480-二叉树的所有路径
后序遍历非递归,当遍历到叶子结点时,将栈中所有的内容都按照格式要求生成列表返回。 static List<String> ret=new ArrayList<>();//全局变量 static public List<String> binaryTreePaths(TreeNode root) { // write your code here if(root==null原创 2017-10-29 20:05:19 · 371 阅读 · 0 评论 -
LintCode 95-验证二叉查找树
static ArrayList<Integer> list=new ArrayList<>();//全局变量 static public boolean isValidBST(TreeNode root) { // write your code here getlist(root);//获得序列,保存在list中 return isascen原创 2017-10-29 19:43:37 · 419 阅读 · 0 评论 -
lintCode 搜索插入位置
public int searchInsert(int[] A, int target) { // write your code here for(int i=0;i<A.length;i++){ if(A[i]>=target) return i; } return A.length;}}原创 2017-10-28 20:12:27 · 323 阅读 · 0 评论 -
LintCode 二叉树的最大节点
static int i; static TreeNode p; static public TreeNode maxNode(TreeNode root) { // write your code here if(root==null)return null; p=root; i=root.val; fin原创 2017-10-28 19:25:02 · 344 阅读 · 0 评论 -
LintCode 72-中序遍历和后序遍历树构造二叉树
仿照《王道数据结构2016版》 127页第6题。 static public TreeNode buildTree(int[] inorder, int[] postorder) { // write your code here if(inorder.length==0) return null; return InandpostTree(ino原创 2017-10-28 18:43:58 · 311 阅读 · 0 评论 -
LintCode 155-二叉树的最小深度
本人电子系,只为一学生。心喜计算机,小编以怡情。 思路:层次遍历,层数计数由自己定义的last来计数public int minDepth(TreeNode root) { // write your code here ArrayList<TreeNode> que=new ArrayList<>(); int count=0;原创 2017-08-14 10:43:53 · 303 阅读 · 0 评论 -
LintCode 177-把排序数组转换为高度最小的二叉搜索树
本人电子系,只为一学生。心喜计算机,小编以怡情。给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。注意事项There may exist multiple valid solutions, return any of them.//递归建立 public TreeNode sortedArrayToBST(int[] A) { if (A.length==原创 2017-08-14 09:30:55 · 354 阅读 · 0 评论 -
LintCode 469-等价二叉树
本人电子系,只为一学生。心喜计算机,小编以怡情。 public boolean isIdentical(TreeNode a, TreeNode b) { // Write your code here if(a!=null && b!=null){ boolean m=isIdentical(a.left,b.left); b原创 2017-08-13 09:42:59 · 294 阅读 · 0 评论 -
LintCode 405-和为零的子矩阵
本人电子系,只为一学生。心喜计算机,小编以怡情。 两个函数,一个用来扫描,一个用来判断两点间的子矩阵是否为零 复杂度n^4static public int[][] submatrixSum(int[][] matrix) { // Write your code here for (int i = 0; i < matrix.length; i++)原创 2017-06-02 17:06:19 · 717 阅读 · 0 评论 -
LintCode 161-旋转图像
本人电子系,只为一学生。心喜计算机,小编以怡情。 static public void rotate(int[][] matrix) { // write your code here if(matrix.length==0) return ; int [][]temp=new int[matrix.length][matrix[0].length];原创 2017-06-02 10:03:25 · 352 阅读 · 0 评论 -
LintCode 401-排序矩阵中的从小到大第k个数
本人电子系,只为一学生。心喜计算机,小编以怡情。在一个排序矩阵中找从小到大的第 k 个整数。排序矩阵的定义为:每一行递增,每一列也递增。您在真实的面试中是否遇到过这个题? Yes 样例 给出 k = 4 和一个排序矩阵:[ [1 ,5 ,7], [3 ,7 ,8], [4 ,8 ,9], ] 返回 5。 思路是广度优先搜索//自定义的数据结构static publi原创 2017-06-01 10:02:09 · 901 阅读 · 0 评论 -
LintCode 162-矩阵归零
本人电子系,只为一学生。心喜计算机,小编以怡情。给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)样例 给出一棵二叉树 {3,9,20,#,#,15,7},3/ \ 9 20 / \ 15 7 按照从下往上的层次遍历为:[ [15,7], [9,20], [3] ]public Ar原创 2017-05-10 16:04:44 · 486 阅读 · 0 评论 -
LintCode 374-螺旋矩阵 状态机
使用状态机的思路,运用四个状态来回切换,并用count计算步长最终退出。 static public List<Integer> spiralOrder(int[][] matrix) { // Write your code here List<Integer> ret = new ArrayList<>(); if (matrix.length =原创 2017-05-26 11:01:46 · 387 阅读 · 0 评论 -
LintCode 105-复制带随机指针的链表
本人电子系,只为一学生。心喜计算机,小编以怡情。给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。返回一个深拷贝的链表。 解答思路:既然给了一个random指针,那么就要充分利用。因为是深拷贝,那么我们就要new一个新的节点,让原先的random指向它。 当然,random要保存起来,我选择的用ArrayList来保存。public RandomListNode原创 2016-12-31 22:08:13 · 506 阅读 · 0 评论 -
LintCode 170-旋转链表
本人电子系,只为一学生。心喜计算机,小编以怡情。给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数样例 给出链表1->2->3->4->5->null和k=2 返回4->5->1->2->3->nullpublic ListNode rotateRight(ListNode head, int k) { // write your code here原创 2016-12-30 22:10:15 · 316 阅读 · 0 评论 -
LintCode 最长公共子串
public int longestCommonSubstring(String A, String B) { // write your code here int count=0; int max=0; for(int i=0;i<A.length();i++) for(int j=0;j<B.length(原创 2016-12-22 16:10:08 · 416 阅读 · 0 评论 -
LintCode 140-快速幂
本人电子系,只为一学生。心喜计算机,小编以怡情。计算an % b,其中a,b和n都是32位的整数。样例: 例如 2^31 % 3 = 2 例如 100^1000 % 1000 = 0快速幂网上有资料,而且我看其他博主说这是RSA公钥的加密方法(神奇)。总之做完后给我的感觉就像是数字信号处理中的FFT算法,也是用一半算出整体,总之是相当的神奇。 快速幂-百度百科 核心算式a^n%b=(a原创 2016-12-27 19:42:10 · 619 阅读 · 0 评论 -
LintCode 187-加油站
本人电子系,只为一学生。心喜计算机,小编以怡情。在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第i个加油站前往第i+1个加油站需要消耗汽油cost[i]。你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。注意事项 数据保证答案唯一。样例 现在有4个加油站,汽油量原创 2016-12-27 20:36:34 · 469 阅读 · 0 评论 -
LintCode 184-最大数
本人电子系,只为一学生。心喜计算机,小编以怡情。给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。注意事项 最后的结果可能很大,所以我们返回一个字符串来代替这个整数。样例: 给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201。感悟:这是一道非常好的题,虽然看起来很简单,但是做起来真的很锻炼编程能力(很受打击,因为我总共花了一整天的时间才做出来了)思路:1、原创 2016-12-29 18:55:57 · 492 阅读 · 0 评论 -
LintCode 182-删除数字
本人电子系,只为一学生。心喜计算机,小编以怡情。给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数。 找到删除 k 个数字之后的最小正整数。 N <= 240, k <= N样例: 给出一个字符串代表的正整数 A 和一个整数 k, 其中 A = 178542, k = 4返回一个字符串 “12”经验:Stack里放St原创 2016-12-29 20:02:33 · 441 阅读 · 0 评论 -
LintCode 116-跳跃游戏
给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置 可以 跳跃的最大长度。 判断你是否能到达数组的最后一个位置。注意事项这个问题有两个方法,一个是贪心和 动态规划。贪心方法时间复杂度为O(N)。动态规划方法的时间复杂度为为O(n^2)。我们手动设置小型数据集,使大家阔以通过测试的两种方式。这仅仅是为了让大家学会如何使用动态规划的方式解决此问题。如果您用动原创 2016-12-30 09:56:56 · 512 阅读 · 0 评论 -
LintCode 52-下一个排列
本人电子系,只为一学生。心喜计算机,小编以怡情。给定一个整数数组来表示排列,找出其之后的一个排列。注意事项排列中可能包含重复的整数样例 给出排列[1,3,2,3],其下一个排列是[1,3,3,2]给出排列[4,3,2,1],其下一个排列是[1,2,3,4]思路是,先写出几个常见的找到规律 比如: 123 132 213 231 312 321 从后往前看,发现是23—32,132时原创 2016-12-30 21:00:34 · 405 阅读 · 0 评论