算法刷题
文章平均质量分 63
杨·戬
孤舟蓑笠翁 独钓寒江雪
展开
-
leetcode LCR24反转单链表
这个代码里面我加了我自己写的测试数据,自己可以去找对应的部分,直接粘贴赋值就可以在leetcode提交成功,我们就没有把迭代与递归单独分开了,里面还有大量的注释说明,请结合题目分析仔细观看。c语言版本测试代码,仅做参考。好了,祝早安,午安,晚安。原创 2023-11-28 20:11:22 · 616 阅读 · 0 评论 -
leetcode42接雨水问题
【代码】leetcode42接雨水问题。原创 2023-11-27 15:53:52 · 617 阅读 · 0 评论 -
leetcode82删除排序链表中的重复元素
上面就是如果头结点与它的next结点的值一样,那么就把这个头结点的next交给move结点,然后内部循环是否继续相等,知道不相等的时候跳出循环,继续以move为头结点进行递归,一旦到了一个与next不相等的位置,那么就把这个当前move指针的next继续下面递归,直到最后next等于NULL时候,停止递归,开始返回数据。那么最早的头一定是最晚返回的数据,所以最后的head,一定就是头结点了。外部循环判定卡住的位置。好了,祝大家早安午安晚安。具体分析一下指针移动。原创 2023-11-01 13:56:34 · 171 阅读 · 0 评论 -
单链表习题(对应章节chapter2)
这里说一下我用到自己之前写的一个单链表的动态库,不会的同学可以参考我在Linux专栏动态库与静态库制作,后面就不在多说了。参考代码:位置(/chapter2/c++/middle-link-list-node/lc1.cc)第一种思路分析:考虑指针移动到相应的位置来做。题目1:链表的中间结点。原创 2023-10-09 22:10:11 · 159 阅读 · 0 评论 -
算法的时间复杂度分析习题专题1
时间复杂度为O(nlogn)明显与题目要求不符合,no_pass。之前写了一篇重点是讲理论,今天重点在于对于题目的分析。题目难度不分先后,有题目来源会直接给出链接或者位置。下面是第二种思路分析。时间度O(n),通过。原创 2023-09-29 17:50:33 · 543 阅读 · 0 评论 -
有效回文字符串(Valid palindrome)
正确的方法来检查字符串是否为空。如果你尝试将空指针传递给这个函数,编译器会报错,因为它不接受指针作为参数。所以不需要额外检查指针是否为 NULL。1.这里引入了c语言当中的一个头文件,去进行字符判断的操作。2.下面这里为什么不进行NULL的判断。上面的时间算法复杂度还是O(n)下面分析一下它的时间复杂度。所以时间复杂度是O(n)原创 2023-09-12 01:15:17 · 123 阅读 · 0 评论 -
最长回文子串(Longest Palindromic substring)
第一个:关于-1/2=0,本来应该是-0.5,但是1与2都是整型嘛,然后后面就截断了 0不占符号位,如果还是-4/2 = -2,这个时候就得有符号位。第二个:printf()不能打印char*的c语言类型的字符串,所以字符串可以调用c_str()函数变成包含了c语言指针的字符串。就是正读和反读都是一样的字符串,比如aba,abba,cdc像这样的字符串都是回文字符串。这个图解的意思就是我们要拿到每一个右边的数,然后与左边的数一一匹配。下面用图解的方式对c++的部分进行分析。下面看一下java的实现代码。原创 2023-09-11 14:13:07 · 474 阅读 · 0 评论 -
移动盒子uva12657
例如,如果n=6,则在执行1 1 4之后,该行变为2 3 1 4 5 6。然后在执行2 3 5之后,该行变为2 1 4 5 3 6。然后在执行3 1 6之后,该行变为2 6 4 5 3 1。然后在执行4之后,行变为1 3 5 4 6 2。每个测试用例以一行开始,该行包含2个整数n,m(1≤n,m≤100000)。•1 X Y:将方框X向左移动到Y(如果X已经是Y的左边,则忽略此项)•2 X Y:将方框X向右移动到Y(如果X已经是Y的右边,则忽略此项)表上一行有n个框,编号为1。•3 X Y:交换盒X和Y。原创 2023-04-04 15:22:31 · 273 阅读 · 0 评论 -
第 100002(十万零二)个素数是多少?
一般认为最小的素数是2,接着是 3,5,...第三:用已知的素数去筛选合数,避免重复筛选,避免重复筛选这个过程,就是一个位置,如果一旦被标记为合数之后,就不要重复标记为合数。第二:如果当前被筛选的是一个质数,那么质数*质数是可以筛选掉一部分合数,其实也是通过最小因子算出来的。讲一个查找20以内的所有素数,假定是查找到20,但是这个数据这个可能更大,这里我们用一种埃氏筛选法。请注意:“2” 是第一素数,“3” 是第二个素数,依此类推。确实能解决问题,但是运行的非常慢,时间复杂度是O(n)原创 2023-03-22 03:23:58 · 866 阅读 · 1 评论 -
Hrbust报数问题
题目描述有 N 个人围成一圈,按顺时针给他们编号为 1-N。紧接着,指定编号为 M 的人开始报数,报数按顺时针进行。报到 D 的人出列,下一个人重新开始报数。按此规律,每次报到 D 的人都出列。要求同学编程求出出列的顺序。输入输入包括多组测试用例。对于每组用例,第一行是一个整数 N,表示人数。N原创 2023-03-15 15:18:28 · 311 阅读 · 0 评论 -
递归之小球不稳定膨胀问题Erratic Expansion
先说一下此题出处uva12627Piotr found a magical box in heaven. Its magic power is that if you place any red balloon inside itthen, after one hour, it will multiply to form 3 red and 1 blue colored balloons. Then in the next hour,each of the red balloons will multip原创 2022-06-17 17:53:45 · 123 阅读 · 0 评论 -
链表之破损的键盘
但是可能last的移动有没有可能会存在问题,也就是说,last如果想cur一样跟着i移动,那么当遇到 ] 这个符号的时候,怎么去找0这个位置呢,所以,它跟着移动的条件必然是last == cur的时候,往下正常移动,否则会停在0这个位置。必须明白,last不是在next数组的最后一个位置里面,而是可能在中间或者其他位置,那么他的移动怎么来考虑,自然肯定是跟着i移动,它的位置最后始终停留在0这个数据位置,也就是末尾。这个要在新数组中插入一个数据呢,时间开销比较大,因为这里就涉及到了大量的数据移动,不可取。原创 2022-05-08 23:11:06 · 343 阅读 · 0 评论 -
栈之基于后缀表达式的运算
这里我做了一个输入正常表达式,然后转换成后缀表达式,然后在计算,注意,表达式之间每一个数字之间,数字与操作符之间是有空格的,主要是方便区分数字。后缀表达式的优点就是,我们没要记住运算符的优先级,符号进来,直接拿两个数出来运算,在压入栈里面就行。原创 2022-02-22 21:27:52 · 481 阅读 · 0 评论 -
栈之中缀表达式转后缀表达式
题目描述:就是把我们平常写的运算表达式换成另外一种表达式,运算符前面两个数字执行相关操作。用图说明一下:比如3+2 -> 3 2 +比如3 + 3 * 2 -> 3 3 2 * +再比如 3 + (3 * 2 + 2) * 3 ->3 3 2 * 2 + 3 * +说一下基本规则:遇到普通数字直接输出,遇到符号,先去判断与栈顶元素的优先级,如果栈顶元素优先级高,则把栈里面的元素依次出栈并输出,出栈之后,再把该符号入栈,如果栈顶优先级低,则把这个符号直接入栈。特殊原创 2022-02-20 02:33:09 · 475 阅读 · 0 评论 -
栈之括号匹配问题
习题1:括号匹配问题问题简单描述:本来( )这两个括号是成对存在的,如果遇到出现不成对情况,并且成对的括号是以(左括号在前,)右括号在后成对存在的,连续单独出现左括号、右括号或者左括号里面夹杂不合理的左右括号都是错误信息。也就是当出现一个右括号,栈里面必须由个左括号进行匹配,否则失败。问题解题思路:下面来说一下具体的代码设计:我先把之前做的栈设计成一个动态库,这样我们直接可以调用栈里面的所有方法关于怎么设计成动态库,可以参考我之前的文章linux之动态库与静态库。好.原创 2022-02-17 21:42:48 · 1956 阅读 · 0 评论 -
单链表习题之删除指定元素
Title DescriptionEnter n integers, establish a single linked list of headernodes according to the input order, and then enter a data m to delete all nodes with a value of m in the single linked list. Output the initial single linked list and the...原创 2022-01-19 17:03:39 · 2730 阅读 · 0 评论