c语言学习总结
文章平均质量分 51
学习过程中的总结
2301_81998591
这个作者很懒,什么都没留下…
展开
-
左旋字符串 C语言三种解法总结
思路:左旋k个字符相当于将前k个字符直接拼接到最后面。思路:将左旋理解为将开头k个数字不改变顺序直接放在结尾,再将剩余字符往前移动相应的k位得到结果。一次将数组所有元素往前移动一位再见原本首元素放到末尾,循环k次即可达到效果。先将整个数组逆序,再把逆序后的前sz-k个逆序,最后将后面k个逆序得到结果。给k赋不同的值发现最终结果有周期性且与字符串长度有关。解法三(旋转三次)(作为新手感觉压根想不到。实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDA。到此三种方法结束还需加油!原创 2024-03-09 15:43:28 · 429 阅读 · 0 评论 -
完美的代价(c语言)PTA
回文字符串有一个明显的特点即左右对称如:madam以‘d’为界限左右对称,很明显字符数为奇数且除了d外其他字母都成对存在,如果有两个d则为maddam,既然字符串呈轴对称那么就可以想到让对称轴左边不动,右边按照左边的顺序进行排列,排列时统计最少需要交换的次数。1:字符串个数为奇数那么同时用一个变量来记录单独字符的个数,若大于一个则该字符串没法变成回文字符串,之后计算出该单独字符移到对称轴位置需要交换的次数加到count中即可。2:字符串个数为偶数,只要出现单独的字符则一定无法构成回文字符串。原创 2024-03-15 23:03:41 · 246 阅读 · 0 评论 -
找到数组中的单一元素(找单身狗)c语言实现
(1)如果为奇数则说明mid前面有奇数个元素由于只有一个单一元素所以该元素一定在mid前面所以比较nums[mid]与nums[mid-1]如果相等则mid小于要找元素的下标所以要调整left=mid+1,如果不等调整right=mid,(因为不相等的情况下要找的下标可能就是mid);即harsh[nums[i]](本题不推荐使用)(2)如果为偶数,比较nums[mid]与nums[mid+1]如果相等调整left=mid+1,不等则right=mid(因为不相等的情况下要找的下标可能就是mid);原创 2024-03-23 18:56:29 · 735 阅读 · 0 评论 -
最长上升子序列 思路总结(动态规划)
由于序列最短为1所以给dp数组都初始化为1,同时外层for循环从i=1开始遍历,里面的for用来遍历i下标之前的所有元素.当遇到arr[i]>arr[j]时dp[i]就需要更新了。首先很明显一个数组中有许多上升子序列由动态规划的思想最长的上升子序列长度即为仅次于他的最长上升序列长度+1.,依此类推以前面元素结尾的上升序列长度为更前面的长度+1.分析会发现当arr[i]=8时dp[i]会先更新为5,j指向元素3时又会将dp[i]更新为4是最终结果少一所以一个写成后者。原创 2024-04-22 16:38:19 · 133 阅读 · 1 评论