001 c/c++ 题目详解
文章平均质量分 61
重难点题目解析
且听吟风°
扣:903199567
展开
-
链表练习题
curr记录新插入的哑节点中最后的位置,头节点为空或头节点的下一个为空直接返回。pre初始化为头节点,cur初始化为下一个节点,比较两个的值,如果不相等加入到哑结点的尾部后面,每次插入完需把next置空,不然仍然链接的原链表。创建一个哑结点是头节点的前一个,last初始化为头节点,curr指向头节点下一个,curr是待排序的节点。前面部分基本相同,当两个节点的值相等时,不断移动cur和pre,直到cur出现第一个不相等的值,将哑结点链接到该节点,如果不设哑节点,需要判断是头节点的情况,退出循环。原创 2024-01-24 12:03:24 · 404 阅读 · 0 评论 -
数组形式的整数加法
此题考整数加法进位的处理,第一个需要将原数组从个位递增和k的对应位相加,同时还要考虑如果k的位数比原数组多,还要加完k。从后往前放新数组里难以判断下标,所以从0下标往后放,记录次数,最后一个逆置就成功了。一次性将原数组和k不为0的情况都加完,比如123 + 82(k),先用3+ 82,85存5然后剩下的80归入到下一位变为8和2相加,最后逆置。先贴第一种思路,先将原数组位数加完,有进位保存%10后保留的数字,k/10后加1。然后加完k,将数组逆置。原创 2024-01-19 19:31:48 · 386 阅读 · 0 评论 -
【异或练习,逆置左旋】
根据这个特点,出现两次的数字异或会变为0,0异或只出现过一次的两个数,结果是这两个数异或。1,2, 3, 4都出现了两次,它们异或的结果是0,这组数字全部异或后结果是5^6=3,异或是两个数不一样才为1,所以可以根据任意一位不一样的1,把原数组分成两组,这样相同的数在一组,5和6会分别在两组中,把每一组全部异或,就能找出单独出的数。第一段逆置,将前n个字母逆置,n是翻转前几个,也是想要翻转的次数。如左旋一次,先将第一个字母A取出来,然后把剩下的BCD向前移动1位,将A再放到最后。原创 2023-11-23 22:50:21 · 326 阅读 · 0 评论 -
计算100阶乘
当最后还有进位时,需要保存到cnt+1位,在循环累乘的过程中,这个进位很可能不只一位,所以需要循环处理,每次保留cnt%10,然后/10来更新进位,cnt每次也需要加一位。如345*5,需要用12345每一位来乘50,先用个位5*5,个位需要填的数字是5,进位是2,然后用4*5,十位需要填0+进位,也就是2,然后继续进位2,所以每次保留的结果就是计算结果加上进位%10,进位就是结果/10。模仿竖式运算,用两个数组,一个数组用来不断乘结果,一个数组用来保存结果。两个数组,每次更新一下用来计算的数组。原创 2023-11-23 13:55:55 · 270 阅读 · 0 评论 -
【指针练习1】
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数 位于数组的前半部分,所有偶数 位于数组的后半部分。原创 2023-11-17 13:26:42 · 248 阅读 · 1 评论