云海翻腾
云海翻腾
全部文章
分类
C++(5)
程序/算法设计(2)
题解(29)
归档
标签
去牛客网
登录
/
注册
云海翻腾的博客
day day up
全部文章
(共5篇)
将数组循环右移k位
将长度为n数组循环右移k(范围1到n)位 方法一 思考: 找每个元素a[i]的最终所在位置,直接放上去,但是放上去前需要先将放置位置元素保存,然后找被保存元素的最终所在位置...一直循环到a[i]结束。 为了提高效率,可以倒着处理,这样元素a[i]只需要暂存一次。将a[i]暂存,到最终要放到i位置...
C++
数组
2021-12-01
0
669
题解 | #最长无重复子数组#
最朴素的想法,用i做下标遍历数组,对于当前i,用j从i + 1开始遍历数组,当a[i:j-1]子数组中包含a[j](设下标为k)时,说明a[i:j-1]不能更长,此时更新i为k+1。 这样我们可以找到所有子数组和其长,自然可以找到最长子数组。 优化点:判断a[i:j-1]中是否包含a[j],以及如果...
C++
数组
哈希表
2021-11-22
0
354
题解 | #扑克牌顺子#
首先对数字进行排序,排序过程中同时判断除0外是否有重复的数字,有重复则不能组成顺子。 对排好序的非0序列arr[start:end]进行计算,看要组成顺子还差几张牌,差的牌数小于等于0的个数,则能组成,否则不能组成 如2,4,7序列,则还差(4-2+1) + (7-4+1)=3张,这时只有两个0是不...
C++
数组
2021-10-13
0
435
题解 | #数组中出现次数超过一半的数字#
分析 一个数字出现的次数超过数组长度的一半<=>这个数字出现的次数可以抵消所有其它数字出现的次数 首先对elem=a[0]进行计数cnt=1, 当后面a[i]为elem时,就cnt++,否则cnt--,当cnt减为0时,从elem=a[i]重复前面的动作。 这样最终所求数字只可能是ele...
C++
数组
计数
2021-10-13
0
319
题解 | #丑数#
一、维护两个序列,分别叫uglys和factors uglys表示生成的丑数序列,每时刻该序列都是正确的,无需调整,初始化值只有1 factors与uglys对应,每个元素表示对应丑数当前应该乘的因子(只可能是2、3、5和-1),初始值2 二、丑数生成过程,循环执行下面的步骤 从factors中找...
C++
数组
数学
2021-10-12
0
304