☰
cpp算法题目整理——线性枚举篇2
2026/9/26 20:04:07 网站建设 项目流程

三元组中心问题

题目描述:

在数列 a1,a2,⋯,ana1​,a2​,⋯,an​ 中,如果对于下标 i,j,ki 满足 0<i<j<k<n+1 且 ai<aj<ak​,则称 ai,aj,ak 为一组递增三元组,aj为递增三元组的中心。

给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。

解题思路:

这个题目不能下意识用三层循环解决,用三层循环会导致重复计数,因此引入两个bool值,用来判断j前面有没有小于他的元素,j后面有没有大于他的元素,有的话就直接break,因为只要存在一个小于、大于j的数,就能说明j就是三元组的中心,而且这样还是两层循环。

拿硬币

题目描述:

桌上有n堆力扣币,每堆的数量保存在数组coins中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。

解题思路:

我是先定义了一个哈希表unordered_map m<int,int>;然后定义了m[1]、m[2]的次数为0,接着for循环遍历整个coins,然后去判断每个coins[i]需要多少次2,多少次1,因为求次数最小值,所以肯定优先拿2个,如果刚好取完,那就将次数加在m[2]上,然后直接break,如果有余数,那必定为1,然后m[1]++即可,然后break,等待遍历完之后写一个sum求出m[1]和m[2]出现的次数并返回即可。

删除有序数组中的重复元素

题目描述:

给你一个 非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。元素的相对顺序 应该保持 一致 。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k。去重后,返回唯一元素的数量k。nums的前k个元素应包含排序后的唯一数字。下标k - 1之后的剩余元素可以忽略。

解题思路:

利用双指针遍历,slow=0,fast=1,然后遍历整个数组,fast<nums.size();fast++; 然后当nums[slow] != nums[fast]的时候,将slow++,向前移动,然后将fast的值赋值给slow,这样一来就会把后边的值赋值给第一个重复元素的第二个值,依次往后,重复元素就会被逐个替代,最后返回slow+1就是数组长度。

将找到的值乘以2

题目描述:

给你一个整数数组nums,另给你一个整数original,这是需要在nums中搜索的第一个数字。

接下来,你需要按下述步骤操作:

  1. 如果在nums中找到original,将original乘以 2 ,得到新original(即,令original = 2 * original)。

  2. 否则,停止这一过程。

  3. 只要能在数组中找到新original,就对新original继续重复这一过程。

返回original的最终值

解题思路:

这个也是进行for循环,但是i++不能放在for循坏内层,应该进行判断,因为original每次变化之后都需要从头遍历数组,因此当找到这个original的时候需要将i重新置为0,num[i]不等于original的时候才进行i++;

猜数字

题目描述:

猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。
比如计算机随机产生的数字为1122。如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置。如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置。
现在给你一段gameboy与计算机的对话过程,你的任务是根据这段对话确定这个四位数是什么。

输入数据有多组。每组的第一行为一个正整数N(1<=N<=100),表示在这段对话中共有N次问答。在接下来的N行中,每行三个整数A,B,C。gameboy猜这个四位数为A,然后计算机回答猜对了B个数字,其中C个在正确的位置上。当N=0时,输入数据结束。

每组输入数据对应一行输出。如果根据这段对话能确定这个四位数,则输出这个四位数,若不能,则输出"Not sure"。

解题思路:

这个题目是我做过的最复杂也是难度最高的问题了,也是直接遍历,四位数嘛,从1000开始到9999,然后将每个数字去和输入的猜测值,正确数字的个数,正确数字的位置进行匹配,,找到满足匹配所有条件的cand再进行输出,主要分为两大块,一是验证条件c,一是验证条件b,验证之后输出即可,如果不存在就输出not sure就行。这个题目对我来说是最难的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询