
算法题
维1
这个作者很懒,什么都没留下…
展开
-
已知进栈序列,求所有出栈序列||已知出栈序列求所有的入栈序列
已知出栈序列求所有的入栈序列头条实习一面的算法题,当时没有想出来,事后想起来求出栈序列的所有入栈序列和求进栈序列的所有出栈序列其实答案是一样的,所以只要按照求进栈序列的所有出栈序列来算就行了。why?A序列 进栈 -> B序列那么B序列 进栈必然可以得到 -> A序列然后用dfs就可以了,巧妙的很。public class AllPopSeq { @Test ...原创 2019-02-03 16:40:21 · 4721 阅读 · 3 评论 -
九皇后
import org.junit.Test;//回溯法求解public class QueenFind { public static final int N = 8; public static int count = 0; @Test public void test() { int[][] arr = new int[8][8]; for (int i = 0; i...原创 2018-04-08 16:04:47 · 1063 阅读 · 0 评论 -
Lint Code 120. 单词接龙
虽然知道是使用bfs求树节点之间的最短路径问题但是还是码不出来,看的答案,失败,具体思路和二叉树的层次遍历近似import org.junit.Test;import java.util.*;public class LadderLength { /** * @param start: a string * @param end: a string ...原创 2018-09-02 16:44:17 · 147 阅读 · 0 评论 -
剑指offer 面试题三 找出数组中重复的数字
import org.junit.Test;import java.util.Arrays;import java.util.HashSet;public class Duplicate1 { /** * 剑指offer 面试题三 找出数组中重复的数字 * 在一个长度为n的数组中的所有数字都在0~n-1的范围内。数组中某些数字是重复的, * 但不知道...原创 2018-09-02 14:46:41 · 229 阅读 · 0 评论 -
LintCode 28. 搜索二维矩阵
import org.junit.Test;import java.util.Arrays;public class SearchMatrix { /** * @param matrix: matrix, a list of lists of integers * @param target: An integer * @return: a boole...原创 2018-08-28 17:30:09 · 141 阅读 · 0 评论 -
LintCode 35. 翻转链表
import org.junit.Test;public class Reverse { /** * @param head: n * @return: The new head of reversed linked list. * * 35. 翻转链表 翻转一个链表 样例 给出一个链表1->2->...原创 2018-08-28 00:57:04 · 144 阅读 · 0 评论 -
LintCode 611. 骑士的最短路线
求棋盘的最短路径问题,BFS遍历,这题就是马跳日的为题,不难,倒是我把x,y轴搞反了浪费了良久的时间查看为什么数组越界import org.junit.Test;import java.util.LinkedList;class Point { int x; int y; Point() { x = 0; y = 0; ...原创 2018-08-23 00:21:44 · 821 阅读 · 0 评论 -
LintCode 69. 二叉树的层次遍历
这题简单是典型的bfs题,注意递归最后将本层节点的集合作为下一层的集合import org.junit.Test;import tree.TreeNode;import java.util.LinkedList;import java.util.List;public class LevelOrder { /** * @param root: A Tree ...原创 2018-08-22 22:45:09 · 186 阅读 · 0 评论 -
LintCode 31. 数组划分
这题反正一看就是和快排的nlogn中的一次n,使用两个指针,要注意的就是考虑各种边界条件,从数组的右边开始,遇到==k的值也往下搜索,而从数组左边开始的指针遇到k值不往上搜索,这样的话就可以控制如果出现重复k值的情况,的到的结果是最先出现的坐标,如果题目要求得到最右边的k的坐标就用左边==k也往上搜索就行import org.junit.Test;import java.util.Arra...原创 2018-08-16 15:06:50 · 120 阅读 · 0 评论 -
LintCode 155. 二叉树的最小深度
这题需要考虑什么是最小深度,根节点到最近叶子节点的距离,为了防止一个子树为null的情况干扰后续的 Math.min(dfsMinDepth(root.left), dfsMinDepth(root.right))运算,将 if (root == null) { // 例如 一个节点,左子树是null,右子树还有东西,左子树就会 ...原创 2018-08-09 02:07:33 · 178 阅读 · 0 评论 -
三种方式求两个数的最大公约数
import java.util.Scanner;public class Gcd { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int n...原创 2018-02-28 16:50:59 · 401 阅读 · 0 评论 -
排序算法-直接选择排序
package Sort;import org.junit.Test;import Sort.utils.Swap;/* * 直接选择排序为不稳定排序 * 直接选择排序的最好时间复杂度和最差时间复杂度都是O(n^2), * 因为即使数组一开始就是正序的,也需要将两重循环进行完,平均时间复杂度也是O(n^2)。 * 空间复杂度为O(1),因为不占用多余的空间。直接选择排...原创 2018-04-08 15:58:25 · 636 阅读 · 0 评论 -
FindNumsAppearSomeTimes
/** * @Author: wei1 * @Date: Create in 2019/1/8 0:23 * @Description: */public class FindNumsAppearSomeTimes { /** * 数组中有两个出现一次的数字,其他数字都出现两次,找出这两个数字 * * @param array * @par...原创 2019-01-08 00:37:57 · 177 阅读 · 0 评论 -
判断一组扑克牌是否是顺子
这个题目的解法中用到了bitmap来去重,记录一下,以后遇到这种需要判断是否出现重复的问题记得使用bitmap来节约空间题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God...原创 2019-01-12 00:37:29 · 1579 阅读 · 0 评论 -
排序算法-桶排序
非比较排序,以空间换取时间的一种排序方式,属于基数排序package sort;import org.junit.Test;import utils.VerificationUtil;import java.util.Arrays;/** * @Author: wei1 * @Date: Create in 2018/12/27 21:26 * @Description: 桶...原创 2018-12-28 16:30:29 · 229 阅读 · 0 评论 -
排序算法-插入排序
package Sort;import org.junit.Test;/* * 插入排序 * 时间复杂度:O(n^2) 由定理:N个互异数的数组的平均逆序数是 N(N-1)/4,可知:基于相邻元素之间的比较和交换的算法的时间复杂度的一个下界为O(N^2) * 空间复杂度:O(1),只使用了一个中间变量 * */public class InsertSort { pu...原创 2018-04-08 15:57:16 · 91 阅读 · 0 评论 -
排序算法-冒泡排序
package Sort;import org.junit.Test;import Sort.utils.Swap;/* * 冒泡排序: * 时间复杂度:O(n^2) * 空间复杂度:O(1) */public class BubbleSort { public static <T extends Comparable<T>> void bub...原创 2018-04-08 15:56:11 · 94 阅读 · 0 评论 -
求最大子列和
package MaxSubseqSum;public class MaxSubseqSumDemo { // 使用三个嵌套循环计算最大子列和,时间复杂度为 O(n^3) public int getMaxSubseqSum1(int[] a, int n) { int i, j, k, ThisSum, MaxSum = 0; for (i = 0; i < n; i++...原创 2018-02-28 16:53:21 · 187 阅读 · 0 评论 -
排序算法-希尔排序
package Sort;import org.junit.Test;import Sort.utils.Swap;/* * 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序, * 它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。 * * 简单插入排序很循规蹈矩...原创 2018-04-08 15:59:18 · 130 阅读 · 0 评论 -
二叉树遍历(前序、中序、后序、层次、深度优先)递归和非递归 java实现
转自:https://www.cnblogs.com/llguanli/p/7363657.html二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历。由于树的定义本身就是递归定义,因此採用递归的方法去实现树的三种遍历不仅easy理解并且代码非常简...原创 2018-08-06 21:59:28 · 3489 阅读 · 4 评论 -
递归
/* * 递归:方法可以调用自己 * 1.递归总有一个最简单的情况——方法的第一条语句总是一个包含return的条件语句。 * 2.递归调用总是去尝试解决一个规模更小的自问题,这样递归才能收敛到最简单的情况。 * 3.递归调用的父问题和尝试解决的自问题之间不应该有交集。 * * 我认为递归就是数学种假说演绎法的实现,我们总是对上一次的运行给与信任, * 用...原创 2018-04-12 14:35:41 · 134 阅读 · 0 评论 -
LintCode 90. k数和 II
FS类题目,果然题目都是靠刷的,这个题目和全排列差不多,自己很快就一套撸出了,主要的细节就是添加一个beginNum变量方便控制重复的例如[1,4][4,1]等重复答案,具体可以参照我的代码import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;pu...原创 2018-08-09 01:30:05 · 287 阅读 · 0 评论 -
LintCode 33. N皇后问题
这个代码几乎是看的九章的答案,写的是真的好,个个变量函数的命名确实有感觉,用一个List同时表示行和列非常巧妙import org.junit.Test;import java.util.ArrayList;import java.util.List;public class SolveNQueens { /** * @param n: The number of ...原创 2018-08-09 00:25:25 · 283 阅读 · 0 评论 -
LintCode 9.Fizz Buzz问题
import org.junit.Test;import java.util.Arrays;import java.util.List;public class FizzBuzz { /** * @param n: An integer * @return: A list of strings. */ /** * Fizz Buz...原创 2018-08-07 22:59:55 · 168 阅读 · 0 评论 -
LintCode 3.统计数字
import org.junit.Test;public class DigitCounts { /* * @param : An integer * @param : An integer * @return: An integer denote the count of digit k in 1..n */ /** * 统...原创 2018-08-07 22:58:44 · 171 阅读 · 0 评论 -
LinCode 14.二分查找
public class BinarySearch { /** * @param nums: The integer array. * @param target: Target to find. * @return: The first position of target. Position starts from 0. * <p>...原创 2018-08-07 22:27:15 · 156 阅读 · 0 评论 -
LinCode 1.AplusB
import org.junit.Test;public class AplusB { /** * @param a: An integer * @param b: An integer * @return: The sum of a and b * https://www.lintcode.com/problem/a-b-problem/des...原创 2018-08-07 22:26:16 · 370 阅读 · 0 评论 -
LintCode 514.栅栏染色
package dp;import org.junit.Test;public class NumWays { /** * @param n: non-negative integer, n posts * @param k: non-negative integer, k colors * @return: an integer, the total...原创 2018-08-07 22:25:13 · 189 阅读 · 0 评论 -
LintCode 29.交叉字符串
import org.junit.Test;public class IsInterleave { /** * @param s1: A string * @param s2: A string * @param s3: A string * @return: Determine whether s3 is formed by interleav...原创 2018-08-07 21:47:17 · 197 阅读 · 0 评论 -
LintCode 18. 子集 II SubsetsWithDup
比不重复的多了一段代码,if (i!=startIndex&&nums[i]==nums[i-1]){ continue; }有点难懂,记一下import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java....原创 2018-08-15 01:19:11 · 317 阅读 · 0 评论 -
LintCode 17. 子集subsets
subsets这题非递归的写法很好写,递归DFS我一直没想到递归的退出条件,没想到是没有,运行完了自动退出,return;再末尾,和partition得到字符串字串类似的通过控制startIndex控制循环从而得到从数组startIndex开始的子串import org.junit.Test;import java.util.ArrayList;import java.util.Arra...原创 2018-08-14 21:01:03 · 215 阅读 · 0 评论 -
LintCode 136. 分割回文串
这个DFS也很特殊,答案很有感觉import org.junit.Test;import java.util.ArrayList;import java.util.List;public class Partition { /** * @param s: A string * @return: A list of lists of string ...原创 2018-08-09 23:32:32 · 167 阅读 · 0 评论 -
LintCode 4.丑数
import org.junit.Test;public class NthUglyNumber { /** * @param n: An integer * @return: the nth prime number as description. * 答案来源:https://blog.youkuaiyun.com/htt789/article/details/7...原创 2018-08-07 23:00:58 · 199 阅读 · 0 评论 -
LintCode 2.尾部的零
//答案来源//[https://blog.youkuaiyun.com/surp2011/article/details/51168272](https://blog.youkuaiyun.com/surp2011/article/details/51168272)/** * 描述 * 设计一个算法,计算出n阶乘中尾部零的个数 * * 您在真实的面试中是否遇到过这个题? * 样例 * 11! = 39...原创 2018-08-07 23:02:27 · 116 阅读 · 0 评论 -
LintCode 16. 带重复元素的排列
写在前面:这题和全排列不含重复元素的那题几乎一样,我比较垃圾,就用HashSet去掉了重复的元素但是看了九章算法的答案也没看懂,他写的很有感觉。用了hash,本来想着怎么写hashcode()和equal()方法的,哪知道都帮我写好了,Integer类型的元素存储在List中的hashcode()和equal()的方法可以直接使用 下面是源代码和我的测试代码://这是ArrayLis...原创 2018-08-08 16:46:39 · 504 阅读 · 0 评论 -
LintCode 15.全排列
学习了怎么写简单的递归DPS,没有去琢磨非递归import org.junit.Test;import java.util.ArrayList;import java.util.List;public class Permute { /** * @param nums: A list of integers. * @return: A list of pe...原创 2018-08-08 15:05:44 · 205 阅读 · 0 评论 -
LintCode 7. 二叉树的序列化和反序列化
TreeNodepublic class TreeNode { public int val; public TreeNode left, right; public TreeNode(int val) { this.val = val; this.left = this.right = null; }}这题反序列化...原创 2018-08-08 15:03:13 · 488 阅读 · 0 评论 -
LintCode 11. Search Range in Binary Search Tree
import java.util.ArrayList;import java.util.List;public class SearchRange { /** * 11. Search Range in Binary Search Tree * @param root: param root: The root of the binary search tree...原创 2018-08-08 14:59:50 · 212 阅读 · 0 评论 -
LintCode 13. Implement strStr() 字符串匹配KMP问题,抄的答案不会写Next函数
public class StrStr { /** * @param source: source string to be scanned. * @param target: target string containing the sequence of characters to match * @return: a index to the first...原创 2018-08-08 14:58:11 · 285 阅读 · 0 评论 -
LintCode 8. 旋转字符串
import org.junit.Test;import java.util.Arrays;public class RotateString { /** * @param str: An array of char * @param offset: An integer * @return: nothing */ /** ...原创 2018-08-08 14:54:37 · 327 阅读 · 0 评论