算法学习
文章平均质量分 94
鼠晓
未来的路是黑的,我不知道怎么走,我需要做的就是先走着。 https://smallzheng.blog.csdn.net https://github.com/mousezheng
展开
-
【算法学习】n个骰子的点数(Java)
目录一、题目描述二、思路分析三、参考代码四、测试连接一、题目描述二、思路分析三、参考代码四、测试连接力扣原创 2021-03-28 18:08:34 · 892 阅读 · 0 评论 -
【算法学习】约瑟夫环(含公式思想总结)(Java)
一、题目描述这个问题是以弗拉维奥·约瑟夫命名的,他是1世纪的一名犹太历史学家。他在自己的日记中写道,他和他的40个战友被罗马军队包围在洞中。他们讨论是自杀还是被俘,最终决定自杀,并以抽签的方式决定谁杀掉谁。约瑟夫斯和另外一个人是最后两个留下的人。约瑟夫斯说服了那个人,他们将向罗马军队投降,不再自杀。约瑟夫斯把他的存活归因于运气或天意,他不知道是哪一个。 ——【约瑟夫问题】维基百科0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。原创 2021-03-27 18:40:55 · 1683 阅读 · 0 评论 -
【算法学习】有效括号 valid-parentheses (Java 参考)
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true原创 2020-10-24 13:21:37 · 408 阅读 · 0 评论 -
【算法学习】最长公共子序列(Java)
一、题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = “abcde”, text2原创 2020-08-30 11:26:07 · 2759 阅读 · 0 评论 -
【算法学习】链表数相加(Java)
一、题目表述给定两个代表非负数的链表,数字在链表中是反向存储的(链表头结点处的数字是个位数,第二个结点上的数字是十位数…),求这个两个数的和,结果也用链表表示。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出: 7 -> 0 -> 8You are given two linked lists representing two non-negative numbers. The digits are stored in reverse o原创 2020-08-22 16:31:07 · 1411 阅读 · 0 评论 -
【算法学习】二维数组查找(Java)
一、题目描述此题源于《剑指 offer》在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入:[[1, 2, 8, 9],[4, 7, 10, 13]],7输出: true二、思路分析此题与前文二维数组检索 search-a-2d-matrix类似,与之不同的是,每一行的第一个数字都比上一行最后一个数字大,这个条件保证了数组有序是单向的(原创 2020-08-09 09:37:21 · 865 阅读 · 0 评论 -
【算法学习】二维数组检索 search-a-2d-matrix(Java)
题目描述请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征:每一行的数字都从左到右排序每一行的第一个数字都比上一行最后一个数字大例如:对于下面的矩阵:[[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]要搜索的目标值为3,返回true;Write an efficient algorithm that searches for a value in an m x n matrix. This matrix h原创 2020-08-08 13:25:54 · 683 阅读 · 0 评论 -
【算法学习】二分查找 binary-search (Java 参考)
题目描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。思路分析此题即有序列表中查找指定元素,是二分查找典型的应用场景。二分查找主要总结有以下要点:(从左到右依次递增的数组为例)开始/结束元素定位(初始化时开始元素 left 为列表第一个下标即 0 ,结束元素 right 定位为 length - 1。减一的原因是计算机计数是从 0 开始,长度为 length 的数组最原创 2020-08-08 13:08:40 · 572 阅读 · 0 评论 -
【算法学习】二叉树的最小深度minimum-depth-of-binary-tree
[二叉树的最小深度牛客网测试](https://www.nowcoder.com/practice/e08819cfdeb34985a8de9c4e6562e724?tpId=46&tqId=29030&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking)#### 一、 题目描述...原创 2020-04-06 21:22:42 · 418 阅读 · 0 评论 -
【算法学习】一行核心代码实现阶乘函数和Fibonacci数列
阶乘: 当i = 1时,F(1) = 1; 当i > 1时,F(i) = i*(F(i-1));斐波拉数列: 当i = 1时,F(1) = 1; 当i = 2时,F(2) = 1; 当i > 2时,F(i) = F(i-1)+F(i-2);参考代码:package mystudy;/** * Created by zsl on 2017/9/22. */public class Si原创 2017-09-22 16:54:00 · 569 阅读 · 0 评论 -
【算法学习】快速排序算法实现(Java)
快速排序是一个很经典的排序算法,,面试很喜欢问,十分重要,最近回顾了一下快排,用Java做以实现。 一,基本思想 快排,是基于分治策略的一种排序算法。(从小打到为例) 【1】选择一个基准 【2】分别从两头进行遍历,把大于基准的放在左边,小于基准的放在右边,最终把基准插入即可。 【3】分别对左右两块进行【1】【2】操作,,直至快中只有一个元素。有点负责,简化一下:“找基准,分两块,递归。”原创 2017-08-27 22:02:40 · 677 阅读 · 0 评论 -
【算法学习】求字符串中第一个出现最少的字符(java)
最近参加某公司二面,出了个算法题“求字符串中第一个出现最少的字符”,一时蒙了,,居然木有想出来,再加上没有熟悉的IDE没手感(真心感觉,敲java需要手感,哈哈可能我还很水)【方案1】原始方法(1)申请一个数组,与字符串等长 (2)循环字符串,对每个字符串进行(3)操作 (3)将字符与字符串中的所有字符进行比对(是否包含自身无所谓),并记录出现个数 (4)遍历统计统计结果,求得最少出现的(第一原创 2017-08-24 23:44:27 · 1123 阅读 · 0 评论 -
【算法学习】求两数组求差数(Java,三重境界)
【题目描述】:两个数组,一个A数组200个,,另一个B数组199个,两个数组乱序,但是差一个数,,,找出差的是那个数。 一。境界1(60分)【1】遍历A数组,对每个数执行【2】操作 【2】遍历B数组对比是否存在此数。参考代码如下:/** * Created by zsl on 2017/8/20. */public class Main { public static void m原创 2017-08-20 21:51:43 · 3823 阅读 · 0 评论 -
【算法学习】全排列算法(java实现)
偶尔刷题,经常遇到需要全排列的地方,一直想用for循环做(n层),理论上是可行的,,可是实际(两三层还行,十层八层,n层,不太合适吧),再次重温一下全排列算法。 【1】案例分析【百度百科】:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 a,b,c,d的全排列如下(程序生成)a b c a原创 2017-08-20 21:20:06 · 2933 阅读 · 3 评论