
数据结构与算法
文章平均质量分 66
一只java小白白的奋斗史
做好眼前事,切忌好高骛远。
展开
-
每天一道算法题の八皇后问题
八皇后问题是一个经典的数学难题,旨在找到一个解决方案,使得在一个8x8的国际象棋棋盘上,放置8个皇后,每个皇后都不会互相攻击。皇后可以攻击同一行,同一列或同一对角线上的棋子。因此,在解决问题时需要确保每个皇后都不在同一行,同一列或同一对角线上。因为每次都是从不同行放入皇后,所以,我们只需要遍历列的位置即可。先构建一个一维数组存储棋盘,我们规定数组的每一。循环遍历每一列,判断当前列是否会冲突。当第n个皇后摆放完之后,结束。原创 2023-02-23 07:52:13 · 367 阅读 · 0 评论 -
每天一道算法题の迷宫找路问题
迷宫找路问题是一个经典的搜索问题,通常用来训练算法和数据结构的实现能力。迷宫可以看作是一个由障碍物和空地组成的网格图,其中障碍物表示不能通过的地方,空地表示可以通过的地方。迷宫找路问题的目标是从起点出发,找到一条通往终点的路径。(先决条件:用二维数组模拟迷宫地图,1表示墙壁,2表示已经走过的位置,3表示死路,5表示成功到达终点)原创 2023-02-19 17:42:01 · 571 阅读 · 0 评论 -
每天一道算法题の中缀表达式转后缀表达式
中缀表达式详解后缀表达式详解查看源码基本思路: 利用栈先进后出的特性去处理操作符原创 2023-02-14 22:34:48 · 281 阅读 · 0 评论 -
每天一道算法题の波兰表达式(前缀表达式)
波兰表达式(Polish Notation,RPN),也称为前缀表达式(Prefix Notation),是一种运算符前置的表达式(原创 2023-02-13 22:20:38 · 407 阅读 · 0 评论 -
每天一道算法题の逆波兰表达式(后缀表达式)
逆波兰表达式(Reverse Polish Notation,RPN),也称为后缀表达式,是一种表达式的表示方法。与普通的中缀表达式(如:A + B)不同,逆波兰表达式的运算符位于操作数后面(如:A B +)。这种表示方法不需要括号和优先级,因此可以直接使用栈来求值。逆波兰表达式在计算机科学中有着广泛的应用,例如在计算机编程语言中,在编译器和解释器的实现中,以及在计算机科学中的算法中。原创 2023-02-13 20:34:15 · 263 阅读 · 0 评论 -
每天一道算法题の中缀表达式
中缀表达式是指操作符位于操作数之间的数学表达式。例如,在中缀表达式"2 + 3"中,操作符"+"位于操作数"2"和"3"之间。现给定一个中缀表达式,请计算其结果。判断当前索引index是否到了字符串的末尾。判断当前符号栈是否为空。原创 2023-02-12 21:05:43 · 473 阅读 · 0 评论 -
每天一道算法题の约瑟夫问题详解
然后first和helper循环移动m-1次,移动后的first指向的就是需要出圈的节点,执行first = first.next helper.next = first即可将其出圈,直到链表中只剩下一个节点时,结束游戏。:有 N 个人围成一圈,每个人都有一个编号,编号由入圈的顺序决定,第一个入圈的人编号为 1,最后一个为 N,从第 k (1原创 2023-02-11 13:53:20 · 197 阅读 · 1 评论 -
#每天一道算法题:出现一次与出现k次的数
出现一次与出现k次的数,分别使用hashMap和不进位加法两种解法,超详细,每句代码都有注释!!!原创 2022-11-26 15:51:06 · 436 阅读 · 0 评论 -
每天一道算法题の回文日期
先循环遍历所有可能的日期,再利用日期合法性筛选不合法的日期,对于合法的日期,判断它是否为回文数,如果是,再判断是否为ABABBABA型回文数。原创 2022-11-11 10:09:36 · 669 阅读 · 0 评论 -
八大排序算法,这一篇就够了(上篇)
@萌新也能快速入门,八大排序的详细分析过程~~!1、分析前言,来自@笔笔的独白~~2、独白完了,一起进入正题吧~~2.1、冒泡排序2.2、选择排序1、分析前言,来自@笔笔的独白~~ 排序,作为算法基础,一定要做到完全掌握,万不可抱着:太low了而不屑于去学的心态。须知,无论多么复杂的算法都是由繁入简,一步一步优化才得到的。且抛开这些不谈,当你以后面试的时候也有可能被问到,所以,在学习算法的过程中,无论是多么简单的算法,也原创 2022-01-26 22:04:57 · 440 阅读 · 1 评论 -
第三届(2012)蓝桥杯第九题——密码发生器
@~第三届蓝桥杯第九题:密码发生器1、要认真读题哦!~~2、题目分析3、各个功能的代码实现1、要认真读题哦!~~ 在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不 安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了 这个程序的任务就是把一串拼音字母转换为6位数字(密码)。我们可以使用任何好记的拼音串(比如名字,王喜明, 就写:wangximing)作为输入,程序输出6位数字。 变换的过程如下:原创 2021-04-05 21:22:56 · 3911 阅读 · 10 评论 -
异或^规律总结
异或^1、异或介绍2、异或的简单使用1、异或介绍 我们知道,异或是通过比较二进制位的值,相同位0,不同为1,根据此特性,我们可以发现以下规律:结合律 (a ^ b) ^ c = a ^ (b ^ c);交换律 a ^ b = b ^ a;对于一个数a来说:异或自己的结果为0:a ^ a = 0;异或0的结果还是自己本身:a ^ 0 = a;异或-1的结果为自身的值按位取反值:a ^ -1 = ~原创 2021-03-06 17:25:06 · 13927 阅读 · 1 评论 -
与运算&总结
&与1、与运算介绍2、与运算的简单使用1、与运算介绍 与的概念:与运算是通过比较二进制位,同为1才为1,否则都为0与运算的常用方式:分配律:a&b=b&a结合律:(a&b)&c = a&(b&c)对于一个数(a)来说:a与1的结果如果为1,则这个数是奇数,如果为0,则这个数是偶数任何数与0的结果都为0一个正原创 2021-03-07 15:46:08 · 11919 阅读 · 6 评论 -
位运算-左移、右移
1、不同数据类型的位运算1.1、左移"<<"1.1.1、 int、long类型 对于int类型来说,其二进制位为32位,所以每32位取一次模。我们来看下面的代码 public static void Test1(){ // //00000000 00000000 00000000 00000001 1的三码 //00000原创 2021-03-05 19:08:57 · 3992 阅读 · 2 评论 -
力扣题库1、两数之和
两数之和0、楔子1、查看题目2、思路分析3、代码实现(java)0、楔子哈喽,好久不见,拖延癌又犯了,一不小心就过去了一个多月,直到今天,一个朋友给我私信,我发现自己已经拖更这么久了,说来惭愧,我以前写博客最大的憧憬就是能够进入周榜前100,然而当我到达了200左右的时候…我拖延症犯了o(╥﹏╥)o,这一次,我一定要冲到前100,冲鸭,算法学起来。1、查看题目点我穿越2、思路分析 首先,分析题目,它的要原创 2021-06-09 22:06:40 · 2000 阅读 · 0 评论 -
蓝桥杯2015届真题C组——立方尾不变
蓝桥杯2015届真题C组——立方尾不变1、题目.txt2、题意分析3、代码实现4、结语1、题目.txt立方尾不变:有些数字的立方的末尾正好是该数字本身。比如:1,4,5,6,9,24,25,....请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。请提交该整数,不要填写任何多余的内容。2、题意分析 根据题意,我们需要找出10000范围以内原创 2021-03-26 20:01:03 · 422 阅读 · 0 评论 -
无论结果多么差,请别放弃,收起你的沮丧,重头再来!!!(算法详解)
@牛客九韶杯模拟测试:ACM赛制1、前言2、来看看????虐我的都是些什么题吧!2.1、 b 小明的作业2.2、 c 斐波那契2.3、d 数列重组2.4、e 三角形的个数3、结语1、前言 临近比赛,我决定找个模拟测试检验一下自己的水平,结果,被虐的体无完肤,完全下不了手,一点思路都没有,赛后,我查看别人大佬的代码,发现我想了半天的题别人4-5行代码就搞定了,说实话,当时自己心里还是挺难受的。觉得自己辛辛苦苦学了原创 2021-04-12 16:46:50 · 4156 阅读 · 2 评论 -
算法详解:这一篇带你入门贪心算法!!
@贪心算法or贪婪算法1、????贪心算法核心思想2、举个????例子3、写个✎题吧!3.1、????看看题目~~3.2、题目分析????~3.3、解题思路????分享 (@all 仅供参考!)3.4、来写代码吧⌨1、????贪心算法核心思想 在每一步的选择中都采取最好或者最优的结构,期望得到最优的结果,虽然每一步都选择最优的结果,其结果并不一定为最优,但一定是最为接近最优结果的。2、举个????例子 &nb原创 2021-04-10 21:19:19 · 4283 阅读 · 2 评论 -
第三届(2012)蓝桥杯第十题——趣味算式
@第三届蓝桥杯第十题——趣味算式1、点我快速查看题目2、来和笔笔一起认真分析~~3、1、点我快速查看题目2、来和笔笔一起认真分析~~3、原创 2021-04-09 16:55:11 · 2250 阅读 · 2 评论 -
查找算法:二分法,插值法的公式详解——菜鸟进阶的必经之路!!!
@查找算法:二分法与插值的详细分析1、简单的二分法查找1.1、算法分析1.2、画图分析1.3、代码实现1:递归法1.3、代码实现2:循环法2、二分微改版:插值查找2.1、算法分析2.2、额,这个图就不画了,和二分差不多2.3、代码实现(递归法,循环请参考二分法的思路):3、总结1、简单的二分法查找1.1、算法分析 二分法,顾名思义,就是对其进行折半分别在两边查找。两边再分别进行折半、查找,再折半、再查找,直到找到为止,原创 2021-04-06 20:40:33 · 4750 阅读 · 7 评论 -
八皇后问题
~ ~ 萌新一看就懂的八皇后 eight queen问题】1、先了解一下题目吧!2、来分析一下吧!2.1、基本问题分析2.2、八皇后的实现过程分析:递归+回溯2.3、只用语言描述很难明白,让我们画个图分析一下吧!!2.3.1、摆放皇后的过程2.3.2、回溯的过程3、分析完了,来写代码吧 (* ^ ▽ ^*) !!~4、结语1、先了解一下题目吧! 皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名原创 2021-03-31 10:35:01 · 3638 阅读 · 5 评论 -
java代码,枚举+贪心实现 POJ 1017:装箱问题!!!
POJ 1017:装箱问题!!!1、查看题目2、题解思路3、代码实现1、查看题目2、题解思路 这题的意思是:有一个6x6的盒子,现在,需要将任意个1x1、2x2、3x3、4x4、5x5、6x6的包装装到盒子中去,并且尽可能节省包装用的盒子(控制成本)。 好,那么我们拿到这题应该如何去思考呢? &nbs原创 2021-03-23 22:24:49 · 6016 阅读 · 4 评论 -
不会用递归解题?这一篇教会你!!
递归1、什么是递归?2、听听音乐,放松心情,享受思考的过程!三级目录1、什么是递归? 通俗来说,递归就是一个方法自己调用自己,但是,如果一直调用的话就会造成栈溢出。所以,递归需要出口,那么,递归的出口应该如何创建呢? 很明显,这里需要用到参数。只有使用形式参数,才能将数据递归到下一个方法,这时原创 2021-03-14 20:46:06 · 3955 阅读 · 0 评论 -
每天一道算法题:整数的加法划分
整数的加法划分要求:对于给定的正整数n,编写算法打印该数的所有加法划分demo:n = 6分析:我们对该数的划分进行观察,可以发现以下规律它的每一行的第一个数是按从小到大的一个顺序排列的每一行都是按从小到大的顺序排列的递归思路:首先,我们需要构造相似性,找到递归的变化条件,这里很明显一个参数是不够的,因为我们需要一个变量来保存每一层循环里符合条件的数据。要保存多个数据,很明显,数组是最合适的,同时,我们还需要定义数组的下标,用来指定数据的存储位置对于第一个条件,我们可以通过一个循环来原创 2021-02-08 21:51:39 · 621 阅读 · 0 评论 -
每天一道算法题:递归、循环打印杨辉三角
1、杨辉三角的规律以下是一个杨辉三角,通过观察,我们不难发现,其规律如下:前两行的元素只有1每一行的第一个元素和最后一个元素都为1从第3行开始,非边缘的元素等于它的上一行的同列元素+前一个元素当前是第几行就有几个元素 1 1 1 1 2 1 1 3 3 1这样看可能还不太清晰,我们把它稍微变一下:从上面的图我们就能很清晰的观察到它的规律了。下面我们来写代码2、递归方式思路分析:首先,对于一个递归来说,我们要构造它的相似原创 2021-02-07 20:51:05 · 853 阅读 · 3 评论 -
数组Array,容易忽视的细节
1、数组1.1、数组的基本介绍数组是一个引用类型,它可以用来存储连续的多个数据,并可以通过下标来进行访问数组拥有固定长度,不可更改的不可变的1.2、数组的定义不同的语言定义的方式也稍有不同,但大体是相似的(这里主要介绍几种常用的)java://方式1:int arr[] = new arr[3];//方式2:int arr[] = {};//方式3:int arr[] = new int[]{};c语言://方式1:int arr[3] = {} ;//方式2:原创 2021-01-28 11:23:24 · 388 阅读 · 7 评论 -
每天一道算法题:求两个字符串的最长公共子序列
最长子序列(LCS)公共子序列是在整个字符串中只要按照顺序可以不用连续的,但是公共子串是指必须连续的字符串,举个例子:ABCBDABBDCABA最长公共子序列是 : BCBA最长公共字串是 : AB递归思路先将两个字符串的第一个字符进行比较如果第一个字符相同:再将剩下的字符进行比较如果第一个字符不相同:与之对应有两种情况将截取了一个字符的串1与完整的串2进行比较将截取了一个字符的串2与完整的串1进行比较根据这两种情况的返回结果进行比较,大的那个就是LCS代码实现:pu原创 2021-02-06 15:14:58 · 3092 阅读 · 0 评论 -
每天一道算法题:打印n个元素的全排列
1、回顾在前一篇文章n个球中取出m个球中介绍过组合与排列,如果是需要计算n个元素的全排列个数,那么我们只需要通过A(n,n)就能得到结果,但是我们需要将其打印出来,那应该要怎么做呢?2、打印n个元素的全排列递归思路分析:首先,n个元素的全排列是什么?我们再写程序之前必须先搞清楚题目的意思,假设我们有3个元素【ABC】,那么,它的全排列就是:【ABC】【ACB】【BAC】【BCA】【CAB】【CBA】现在我们需要去想办法构造相似性,创造递归条件。在这里,我的想法是,从第一个元素开始,让它和后面的每一原创 2021-02-05 21:35:11 · 896 阅读 · 0 评论 -
每天一道算法题:n个球中取出m个球不同思路分析
楔子在开始算法分析之前,这里需要引入数学中组合、排列的概念,先基本介绍一下组合、排列:排列:定义:从n个不同的元素中任取m个(m<=n)元素,按照一定的顺序排成一列,叫做从n个不同的元素中取出m个元素的排列使用排列的三个条件:1、n个不同元素;2、任取m个;3、讲究顺序排列数计算公式:A(n,m)这里稍微说明一下,因为第一项有n-(1-1),第二项是n-(2-1),所以说m项就n-(m-1);举例:A(4,2)A(4,1) = > (4*3*2*1)/1 =原创 2021-02-05 16:43:22 · 4589 阅读 · 3 评论 -
每天一道算法题:递归求数组和的不同思路
1、递归与循环针对刚开始接触的朋友,这里先对递归做一个简单的介绍,递归就是一个类似循环的思维,使用递归去解决问题主要是要做到构造相似性,那么怎么做到呢?主要有以下三点:如果没有明显的相似性,需要主动构造不能相似的原因很可能是缺少参数递归与数学上的递推公式很类似2、递归的思维过程分析:举个例子,这就像平时生活中需要办理什么材料证明一样,你去找相关部门,然后他说,你还没办xxx证明,然后让你去先办xxx证明,而受理xxx证明的部门又说,你还没办xxx证明,就像踢皮球一样,他踢给她,她又踢给它,当原创 2021-02-03 16:41:12 · 1230 阅读 · 0 评论 -
简单的算法:环形数组实现队列详细分析,
楔子2021-1-12,天气晴学习算法的第二天,嗯,头发还是一如既往的疯狂的掉,昨天在学习队列的过程中,我本以为:队列?就这啊!不就是一个先进先出,后进后出吗?这不有手就行?然后一写代码…(懵)啊,这是人学的玩意!!!,偶受不了了!哼╭(╯^╰)╮不管了,劳资今天不写了,想影响我的心态,不存在的。如果明天还拿不下你,我就去搞前端…。第二天:完了完了,还是不会呀,怎么办,偶不想写前端呀,就在这时,我的天灵盖发出一阵耀眼的光芒,随之,一道宛如远古英灵般的碎语在我的脑海中响起:8点了,起床写代码了,8点了,起原创 2021-01-13 15:19:20 · 615 阅读 · 4 评论