![](https://img-blog.csdnimg.cn/20210123145001485.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
大黄讲算法系列
大黄讲解核心算法
大黄奔跑
微信公众号:大黄奔跑,一个喜欢分享的大黄
展开
-
剑指offer——数组中重复的数字
题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。初次拿到这个题目第一反应是构造一个hashMap,用map中的key表示数值,用value表示数值的个数,但是回头一想,其...原创 2020-04-03 09:18:15 · 97 阅读 · 0 评论 -
剑指offer——把字符串转换成整数
题目将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0解题,本题大意是将字符串转化为整数,听着很简单,但是其中有诸多的坑。首先,需要判断输入的是否合法,如果不合法直接返回0。第二,需要判断一个字符代表的是正...原创 2020-04-02 21:01:05 · 126 阅读 · 0 评论 -
剑指offer——不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题目中要求不要加减法实现加法,数据的处理除了四则运算外,最常用的就是位运算。对于十进制的加法如何计算呢?比如 266+58,原来的处理方式做个位与个位加,逢10进1。可以将上述过程拆分开:第一步:各位相加不进位。(个位6+8=14,只取4,十位5+6=11,只取1,百位2+0=2 )第一步得到值为2...原创 2020-04-01 21:49:32 · 124 阅读 · 0 评论 -
剑指offer——求1+2+3+...+n
题目求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)计算连续的数列的和,并且不能用上述一些提供的工具。在网上看到的一种方法,利用递归求和。public class Solution { public int Sum_Solution(int n) { int sum = n;...原创 2020-04-01 19:32:47 · 173 阅读 · 0 评论 -
剑指offer——圆圈中最后剩下的数
题目每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个...原创 2020-04-01 17:52:11 · 147 阅读 · 0 评论 -
剑指offer——扑克牌顺子
题目LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌...原创 2020-04-01 16:51:58 · 153 阅读 · 0 评论 -
剑指offer—数组中只出现一次的数字
题目一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题目解释,比如有数组nums={1,2,4,3,2,1,6,6},找出两个只出现了一次的数,则输出结果为 3,4。退一步讲,如果一个数组中,只有一个数出现一次,其余的数都出现两次,寻找该数。该题如何做呢?可以利用位运算中的异或。位运算性质如下:符号描述结果&...原创 2020-03-31 17:03:42 · 73 阅读 · 0 评论 -
剑指offer—二叉树的深度
题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题中定义了二叉树的深度为:最长的一条路径长度即为树的深度。可以分为几种情况:如果树只有左子树,没有右子树,则树的深度应该为左子树深度+1。如果树只有右子树,没有左子树,则树的深度为右子树深度+1。如果树既有左子树又有右子树,则整个树的深度为max(左子树深...原创 2020-03-30 19:58:40 · 204 阅读 · 0 评论 -
剑指offer—两个链表的第一个公共结点
题目如下:输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)因为链表都是单向链表,一旦两个链表有公共的节点,则从该节后往后的节点都是相同的。因为单向链表中不会存在一个结点有两个不同的节点。整个图形,类似于一种Y形结构。根据以前图形,从尾结点到最后一个相同的节点都是公用的部分,如果我们能够从尾部向首部遍历,...原创 2020-03-30 13:01:17 · 113 阅读 · 0 评论 -
剑指offer—数组中的逆序对
原题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总> 数P。并将P对1000000007取模的结果输出。 即输出P%1000000007首先拿到该题最直观的做法是利用每一个数,与其后的另外一个数作比较,如果后面一个数比前面一个数小,则构成逆序对,简单明了,但是比较的次数较多,平均每个数需要比较n次,总共的时...原创 2020-03-27 20:41:21 · 168 阅读 · 0 评论 -
剑指offer—第一个只出现一次的字符
本题题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).分析:需要查找出第一次只出现过一次的字符,扩大说,也就是要统计字符和个数的关系,两者一一对应的关系,这种关系想到了一个容器:Map第一次遍历,记录每个字符的出现次数。第二次遍历,从头到尾,查看哪个字符出现一次,...原创 2020-03-26 21:03:32 · 59 阅读 · 0 评论 -
剑指offer—丑数
第N个丑数1. 初始版2. 改进版总结题目把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。题中丑数的定义是值包含质因子2、3、5的数,求解第N个数。拿到该题第一想法是一次罗列出1、2、3……N个丑数,最后一个数即为要求的数,大致思路如下:1. 初始版...原创 2020-03-26 19:46:17 · 79 阅读 · 0 评论 -
剑指offer—把数组排成最小的数
原题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思考:本题需要定义一个特定的比较算法,用来比较两个数字num1、num2水放到前面,比如例子中的32 和321,有两种组合32321及32132,其实就是比较两者组合之后谁更小,如果直接用数字拼接,也是可以...原创 2020-03-26 09:50:00 · 69 阅读 · 0 评论 -
剑指offer—连续子数组的最大和
本题是《剑指offer》的题目,原题目为:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续>子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?>例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始...原创 2020-03-25 10:48:51 · 117 阅读 · 0 评论 -
LRU原理及实现
文章目录1. LRU原理2. LRU实现1. LRU原理LRU全称是Least Recent Use,表示最近最少使用的,该思想最初用于计算机操作系统中,内存中的容量较有限,为了能更加合理的利用内存中的性能,对用户的使用作出假设,最近最少使用的越不重要,最近使用的越有可能使用到,使得该元素更容易获取到。如果元素当前容量超过了内存最大容量,则需要删除掉最近最少使用的元素。在其之后,许多缓存及许...原创 2019-10-10 21:32:14 · 1603 阅读 · 0 评论