C++
文章平均质量分 53
nn19999
这个作者很懒,什么都没留下…
展开
-
小A的糖果——练习
第一个盒子只能与第二个盒子进行组合,之后的盒子都有两种组合方式(与前一个盒子或者后一个)。只需要记录当前这堆和前一堆的状态,遍历数组,把需要吃掉的糖吃掉,这样就可以保证吃掉的糖最小。原创 2023-08-08 18:12:21 · 59 阅读 · 0 评论 -
不修改数组找出重复的数字
(分治,抽屉原理) O(nlogn),将每个数的取值的区间[1, n]划分成[1, n/2]和[n/2+1, n]两个子区间,然后分别统计两个区间中数的个数。本题不可改变数组顺序,但大体思路相同,给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。数组1:[1,2,3,4,5,6,7,7] 重复数字是7。数组2:[1,1,2,3,4,5,6,7] 重复数字是1。以数组1:[1,2,3,4,5,6,7,7]为例。数组2:[1,1,2,3,4,5,6,7] 为例。{2},个数和区间长度相等。原创 2023-07-30 10:39:17 · 59 阅读 · 1 评论 -
交换瓶子——贪心(练习)
所以我们可以直接从1枚举到n,如果当前位置的数不等于它的下标,那么我们就必须要把它给替换掉,此步骤每一步都是有效的。设当前位置为i的话,那么就从i+1开始往后枚举,直到找到对应的a[j]和我们的i相等,那么我们就把上个数交换,把交换次数++。可以用置换群算法进行图解与解释:n个数,从第一个数开始,每个数都指向顺序正确时所在位置的那个数,可形成k个环,交换的过程是箭头相连两个数相互交换,此过程一定有数回到自己应在位置,环的数量变多,大小变小,直到每个数指向自己,没有环存在。原创 2023-07-16 21:51:54 · 68 阅读 · 1 评论