![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
冒泡排序、简单选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序
~下一站完美~
这个作者很懒,什么都没留下…
展开
-
二分查找详解
1、二分查找框架int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = left + (right - left) / 2; if (nums[mid] == target) { ... } else if (nums[mid] < target) { lef原创 2020-09-12 21:57:12 · 699 阅读 · 0 评论 -
面试常见的算法
常见排序算法1、冒泡算法冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复n 次,就完成了 n 个数据的排序工作。public static void bubbleSort(int[] arr){ //如果只有一个元素就不用排序了 if(arr.length<2){ return; }原创 2020-08-30 23:02:26 · 855 阅读 · 0 评论 -
数独问题
1、有效的数独class Solution { //拿boolean[][] rows来举例 //row标识对应的行,col标识出现的数字,value标识是否出现 private final int L = 9; public boolean isValidSudoku(char[][] board) { boolean[][] rows = new boolean[L][L]; boolean[][] cols = new boolean原创 2020-08-19 15:59:13 · 126 阅读 · 0 评论 -
根据输入的字符串构造树
题目:给一个二叉树,然后计算树的最大路径;二叉树举例:1(2,3(4,5)) : 1是根,2和3是叶子,然后3又有4,5叶子。package test;import java.util.*;public class Tree { static class TreeNode{ int val; TreeNode left; TreeNode right; public TreeNode(int val){原创 2020-08-19 15:49:48 · 483 阅读 · 0 评论 -
华为机试
1、素数伴侣import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ int num=sc.nextInt(); //存储奇数 ArrayList<Integer> lis原创 2020-08-19 11:14:28 · 856 阅读 · 0 评论 -
关于*匹配的问题
*匹配1、通配符匹配class Solution { //动态规划:dp[i][j]:表示s前i个字符串和p前j个字符串是否匹配 public boolean isMatch(String s, String p) { int len1=s.length(); int len2=p.length(); boolean[][] dp=new boolean[len1+1][len2+1]; dp[0][0]=true;原创 2020-08-15 15:23:56 · 382 阅读 · 0 评论 -
并查集算法
1、概念Union-Find 算法,也就是常说的并查集算法,主要是解决图论中「动态连通性」问题的。2、问题介绍简单说,动态连通性其实可以抽象成给一幅图连线。比如下面这幅图,总共有 10 个节点,他们互不相连,分别用 0~9 标记:现在我们的 Union-Find 算法主要需要实现这两个 API:class UF { /* 将 p 和 q 连接 */ public void union(int p, int q); /* 判断 p 和 q 是否连通 */ publi原创 2020-08-15 15:24:33 · 97 阅读 · 0 评论 -
广度优先搜索(BFS)和深度优先搜索(DFS)
1、图的概念图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示。图可以分为有向图和无向图,一般用G=(V,E)来表示图。经常用邻接矩阵或者邻接表来描述一副图。在图的基本算法中,最初需要接触的就是图的遍历算法,根据访问节点的顺序,可分为广度优先搜索(BFS)和深度优先搜索(DFS)。2、广度优先搜索广度优先搜索在进一步遍历图中顶点之前(这一句话的意识是:在遍历另外一个顶点的相邻节点时,需要把当前顶点的相邻节点全原创 2020-08-12 17:04:32 · 770 阅读 · 0 评论 -
常用算法案例分析(二)
1、动态规划专题1.1、0-1背包的问题问题描述:每篇动态规划文章都得重复一遍套路,步骤为:第一步要明确两点,「状态」和「选择」。先说状态,如何才能描述一个问题局面?只要给定几个可选物品和一个背包的容量限制,就形成了一个背包问题,对不对?所以状态有两个,就是「背包的容量」和「可选择的物品」。再说选择,也很容易想到啊,对于每件物品,你能选择什么?选择就是「装进背包」或者「不装进背包」嘛。明白了状态和选择,动态规划问题基本上就解决了,只要往这个框架套就完事儿了:or 状态1 in 状态1的所原创 2020-07-30 23:18:21 · 797 阅读 · 0 评论 -
常用算法案例分析(一)
1、动态规划动态规划,无非就是利用历史记录,来避免我们的重复计算。而这些历史记录,我们得需要一些变量来保存,一般是用一维数组或者二维数组来保存。下面我们先来讲下做动态规划题很重要的三个步骤:第一步骤:定义数组元素的含义,上面说了,我们会用一个数组,来保存历史数组,假设用一维数组 dp[] 吧。这个时候有一个非常非常重要的点,就是规定你这个数组元素的含义,例如你的 dp[i] 是代表什么意思?第二步骤:状态转移方程,找出数组元素之间的关系式,我觉得动态规划,还是有一点类似于我们高中学习时的归纳法的,当原创 2020-07-29 10:13:41 · 1570 阅读 · 0 评论 -
滑动窗口算法
滑动窗口public String minWindow(String s, String t) { if (s == null || s == "" || t == null || t == "" || s.length() < t.length()) { return ""; } //维护两个数组,记录已有字符串指定字符的出现次数,和目标字符串指定字符的出现次数 //ASCII表总长128 in原创 2020-07-26 18:41:11 · 190 阅读 · 0 评论 -
常用算法汇总
回溯法回溯法教程动态规划动态规划教程滑动窗口滑动窗口教程原创 2020-06-09 19:39:10 · 174 阅读 · 0 评论 -
排列和组合
知识点补充排列组合是面试中的热门考点 因为看似简单的排列组合可以有挺多的变形,根据变形,难度可以逐渐递增,而且排列组合本身有挺多的解法,能很好地区分一个侯选者的算法水平,排列组合如果用递归挺不容易理解的。什么是排列排列的定义:从n个不同元素中,任取 m (m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,当 n = m 时,我们称这样的排列为全原创 2020-05-14 21:27:08 · 1197 阅读 · 0 评论 -
常用算法总结(一)
1、窗口滑动算法前言科普:什么是滑动窗口算法?滑动问题包含一个滑动窗口,它是一个运行在一个大数组上的子列表,该数组是一个底层元素集合。假设有数组 [a b c d e f g h ],一个大小为 3 的 滑动窗口 在其上滑动,则有:一般情况下就是使用这个窗口在数组的合法区间内进行滑动,同时动态地 记录一些有用的数据,很多情况下,能够极大地提高算法地效率。1. 滑动窗口最大值题目描述...原创 2020-04-21 17:28:15 · 177 阅读 · 0 评论 -
排序算法(一)
排序算法冒泡排序冒泡排序链接:https://www.cnblogs.com/jyroy/p/11248691.html原创 2020-03-10 16:00:17 · 123 阅读 · 0 评论 -
排序算法(二)
堆排序堆排序排序链接:https://www.cnblogs.com/chengxiao/p/6129630.html堆排序概念堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点...原创 2020-03-10 15:59:54 · 170 阅读 · 0 评论