算法
文章平均质量分 72
扫地の小沙弥
算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,就似你失去了灵魂
展开
-
双指针算法原理详解
双指针算法原理详解参考链接链表中快慢指针的妙用玩转快慢指针【LeetCode刷题笔记】链表与快慢指针双指针算法基本原理和实践练习题141. 环形链表面试题 02.08. 环路检测相关链接解析滑动窗口解明动态滑动窗口解析双指针什么是双指针双指针,指的是在遍历对象的过程中,不是普通的使用单个指针[或者称之为变量]进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。换言之,双指针法充分使用了数组有序这一特征,从而在某些情况原创 2021-10-17 21:31:00 · 681 阅读 · 0 评论 -
Leetcode--H-Index
Leetcode–H-Index欢迎关注H寻梦人公众号题目解析:思路:1、首先看到h个元素大于等于某个值,N-h个元素小于等于某个值,这显然是一个有序序列的特征,所以自然而然的想到先将数组排序;2、将数组排序之后,对于给定的某个i,我们知道有citations.length - i篇论文的引用数 ≥ citations[i],i篇论文的引用数 ≤ citations[i];3、不妨设h = citations.length - i,即至多有h篇论文分别引用了至少citation[i]原创 2021-07-11 18:37:44 · 143 阅读 · 0 评论 -
Leetcode系列----「Diving Board LCCI」
题解如下:public class DivingBoardLCCI { /** * 暴力解法,遍历每一种可能性 时间复杂度:O(2*N) * @param shorter * @param longer * @param k * @return */ public int[] divingBoard(int shorter, int longer, int k) { if (k==0) { ..原创 2020-07-08 22:22:20 · 237 阅读 · 0 评论 -
Leetcode系列----「Convert Sorted Array to Binary Search Tree」
题目描述:题解:public class ConvertSortedArrayToBinarySearchTree { /** * hint: 数组已经排序,用类似二分的手段将数组分开建树,最后的高度差一定小于等于一,因为左右子树最多只会相差一个元素 * @param nums * @return */ public TreeNode sortedArrayToBST2(int[] nums) { if (nums == nul原创 2020-07-05 00:22:21 · 115 阅读 · 1 评论 -
Leetcode系列----「Longest Valid Parentheses」
题目描述:题解:public class LongestValidParentheses { /** * 解法一:暴力解法,超时了 * 从最大长度的字串,判断字串是否是合格的,如果是,那么当前字串长度就是结果 * @param s * @return */ public int longestValidParentheses2(String s) { int len = s.length(); Stac原创 2020-07-05 00:18:33 · 152 阅读 · 0 评论 -
Leetcode系列----「Remove Duplicates from Sorted List」
题解:public class RemoveDuplicatesFromSortedList { /** * 解法一:逻辑解法,直接把链表当成数组一样来处理就可以了 * @param head * @return */ public ListNode deleteDuplicates(ListNode head) { if (head == null) return head; int pre = head.v..原创 2020-07-05 00:12:33 · 144 阅读 · 0 评论 -
Leetcode系列----「Merge Sorted Array」
题解:public class MergeSortedArray { /** * 逆向思维:我们从大到小选数,从小到大选数会操作会比较麻烦 * 只需要将nums2填充到nums1即可 * @param nums1 * @param m * @param nums2 * @param n */ public void merge(int[] nums1, int m, int[] nums2, int n) { ..原创 2020-07-04 23:55:07 · 451 阅读 · 0 评论 -
数论题合集
1. 迫真数论题目描述H君有一天出门的时候也许是因为过于疲惫,不幸追尾了一辆黑色高级轿车,车主提出的和解条件是…解答一个数论难题!H君一秒钟就搞到了答案,但是想要保护后辈的您决定帮H君回答这个问题:车主定义了一个函数 f(x)f(x) 表示正整数 xx 的各数位之和,举例来说,f(114514) = 1+1+4+5+1+4=16f(114514)=1+1+4+5+1+4=16。现在将有 q...原创 2019-06-15 20:45:23 · 1979 阅读 · 0 评论 -
数论常用内容——数根
对于数根可能接触的不多,但是我觉得这里还是应该做一下简单的总结和介绍数根数根(又称数字根Digital root)是自然数的一种性质,每个自然数都有一个数根。数根是将一正整数的各个位数相加(即横向相加),若加完后的值大于等于10的话,则继续将各位数进行横向相加直到其值小于十为止,最后得到的数字就是该数的数根数根的性质root(a+b)=root(root(a)+root(b))roo...转载 2019-06-15 20:36:40 · 2041 阅读 · 1 评论 -
机器学习--决策树算法
简单介绍机器学习主要分为俩大类:分类问题和回归问题。决策树是常用的分类学习算法,当然也能用于处理回归问题,同时也适合集成学习比如随机森林,作为机器学习的入门算法今天简单介绍一下决策树算法的原理和实现(python)决策树的特点:优点决策树易于理解和实现。对于决策树,数据的准备往往是简单或者是不必要的,而且能够同时处理数据型和常规型>属性,在相对短的时间内能够对大型数据...原创 2019-06-05 12:59:51 · 701 阅读 · 0 评论 -
2017年蓝桥杯决赛(第八届)[c/c++B组]
文章目录1.1.原创 2019-05-21 22:18:03 · 471 阅读 · 0 评论 -
编辑距离算法【莱文斯坦距离、Levenshtein 算法】
文章目录算法概述:应用与其他编辑距离度量的关系问题定义:解析:例题:参考链接:算法概述:在信息论和计算机科学中,莱文斯坦距离是一种两个字符串序列的距离度量。形式化地说,两个单词的莱文斯坦距离是一个单词变成另一个单词要求的最少单个字符编辑数量(如:删除、插入和替换)。莱文斯坦距离也被称做编辑距离,尽管它只是编辑距离的一种,与成对字符串比对紧密相关。一般来说,编辑距离越小,两个串的相似度越大。...原创 2019-05-15 22:17:02 · 1407 阅读 · 0 评论 -
二分查找算法
二分算法系列1. 二分查找算法int bsearchWithoutRecursion(int array[], int low, int high, int target) { while(low <= high) { int mid = (low + high)/2; if (array[mid] > target) high = m...原创 2019-02-17 17:04:02 · 212 阅读 · 0 评论 -
判断是否为二分图的两种算法 dfs/bfs
判断是否为二分图的两种算法 dfs/bfs判断一个无向图是不是二分图,使用染色法.对每个顶点的相邻顶点染与顶点不同的颜色。如果染过色且与顶点颜色相同,则不是二分图。/*author: 熊谦智判断该图是否为二分图 1:判断无向图是否有环: 如果图g有环,用dfs遍历图g,会访问到已经访问过的顶点。2:判断无向图是否为二分图:利用bfs遍历图给图上色(2种颜色),然后判断上色顶点间是否...原创 2019-02-19 22:10:36 · 2845 阅读 · 0 评论 -
素数打表各类算法
素数打表各类算法题目:给出一个正整数n,打印出所有从1~n的素数(即质数);1.解法1分别判断每一个数,是否为素数//判断单个素数 bool isPrime(int n) { if (n < 2) return false; for (int i = 2; i < n; i++) { if (n%i == 0) return false; } re...原创 2019-03-24 20:10:28 · 265 阅读 · 0 评论 -
深度解析母函数算法
深度解析母函数算法1. 生成函数(母函数)在数学中,某个序列 (an)n∈N 的母函数(又称生成函数,英语:Generating function)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般...原创 2019-03-24 21:08:41 · 1278 阅读 · 1 评论 -
数学:凸包算法详解
一.概念:凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,…Xn)的线性组合来构造.在二维欧几里得空间中,凸包可想象为一条刚好包著所有点的橡皮圈。用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有的点。例子:...原创 2019-03-21 19:03:50 · 2074 阅读 · 2 评论 -
后缀数组详解
link:https://www.cnblogs.com/shanchuan04/p/5324009.htmlhttps://www.cnblogs.com/victorique/p/8480093.htmlhttps://blog.csdn.net/a1035719430/article/details/80217267https://www.cnblogs.com/jinkun113/...转载 2019-04-11 10:15:02 · 190 阅读 · 0 评论 -
HDOJ 2856 How far away ?
文章目录题目描述:输出格式:输入数据:输出数据:解析题目描述:There are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this “How far is it if I want to go from house...原创 2019-04-12 21:37:17 · 1363 阅读 · 0 评论 -
二叉树中的最大路径和
文章目录二叉树中的最大路径和二叉树中的最大路径和给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] ...原创 2019-04-17 19:22:27 · 254 阅读 · 0 评论 -
幂函数的位运算解法
以我们常用的2的幂、3的幂、4的幂解法作为例子1. 2的幂解法问题: 判断一个数是否是2的幂解法一: 常规解法bool isPowerOfTwo(int n) { if (n <= 0) return false; int ans = 0; while (n != 0) { if (n&1) ans++; n >>= 1; }...原创 2019-02-22 13:57:07 · 1433 阅读 · 0 评论