算法
文章平均质量分 88
StramChen
好记性不如烂笔头。
展开
-
字符串的排列
3.如果有多个相同的字符,排列可能出现重复排列的情况,因此我们可以先将数组进行排序,将相同的字符放在一起,这样如果下一个遇到的字符和上一个相同,那么我们就可以直接跳过去.因为它们两个交换不会产生新的排列.1.我们可以先固定第一个字符,求剩下n-1个字符的排列情况.求剩下n-1字符的排列情况,就变成了一个子问题,最终我们可以分解成求1个字符的排列情况.这里我们可以利用栈的思路逐级向下递归.空间复杂度:O(n),递归栈的最大深度为字符串长度n,临时字符串temp的空间也为O(n),res属于返回必要空间。原创 2024-06-03 00:08:43 · 305 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
二叉搜素树的递归深度原创 2024-05-26 18:56:03 · 747 阅读 · 0 评论 -
数组中只出现一次的两个数字
因为两数的最低为都是一样的,&1之后还是1,还是无法区分,那么我们看到最低的第二位0011是1,0101是0,很明显这两位就不一样,那么我们就可以将这两数&0010呀,不就能够区分出来了吗?所以,我们要想对两者进行分组操作,就是需要找到两者中的那一位不同的二进制,然后得到分组的与值(去&的那个值),问题不就解决了吗?刷到此题的时候,只写出了最普通的解法,最后看了二进制解法,叹为观止,不禁感叹到它的巧妙,因此记录一下,共勉。但是,我们想一下,&1的操作,归根到底,是按照二进制最低位的不同来分组的,原创 2024-02-29 20:01:53 · 831 阅读 · 0 评论 -
算法-数学-约瑟夫环(孩子们的游戏)
n-3,n-2的最终剩余的数.重新编号前的数列也是一个单独的题目,题目为求m%n,(m+1)%n,(m+2)%n,(m+3)%n,……m-3,m-2的最终剩余的数的位置得出了结果,那求n个数最终剩余数字的位置不也是这个结果吗。从这里我们很容易看出,n=3的子问题,0,2最后得出的位置和n=2的问题,0,1,最后求得的位置一定是一样的.因为这时候是两个问题的n都是2,m都是2,所以最后的位置一定是一样的.所以我们只要利用(m+x)%n=(2+0)%3=2,就得出了n=3的时候剩余的位置在在2这个数字的位置.原创 2024-01-19 20:22:50 · 1066 阅读 · 0 评论 -
算法之动态规划
动态规划算法原创 2023-03-03 20:13:11 · 167 阅读 · 0 评论