首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C语言篇】C语言常考及易错题整理DAY2

,后表达式不计算,第一次循环时i为0,执行i++,第二次循环时i为1,是个真值,不再执行 i++,也就死循环了 在c语言中,一个函数不写返回值类型,默认的返回类型是( ) A: int B: char...1,当且仅当两个哈希数组对应下标存储的数据都是1时说明这个元素在两个数组都出现过,返回创建的数组即可 int* intersection(int* nums1, int nums1Size, int*...Lily使用的图片使用字符"A"到"Z"、“a"到"z”、"0"到"9"表示。...-1 ,在计数不为 0 时,走到末尾保存的字符就是个数超过 n/2 的字符 基于一个很简单的数学原理,当一个数出现次数超过一堆数的一半时,任意相消掉两个不同的数据,这个数在新的这一堆数据中还是保留原来的特性...已经没必要了,因为第2元素是末尾元素了 一次循环完毕后,返回数组中每个元素存储的都是自己左侧元素的乘积。

8210

Review

栈操作指令类 image.png 算术逻辑运算指令类 image.png 【注】leaq 指令不设置条件码,因为它是用于进行地址计算的。对于逻辑操作,进位标志和溢出标志会设置位0。...对于 INC 和 DEC 指令,不会设置 CF 位,因为该二者主要用于循环变量的加减,不修改 CF 位是考虑到循环中有可能进行高精度大数运算;而且 CF 位可以根据 ZF 位来判断,INC 且当前指令...条件传输指令类 image.png set 指令类 指令根据条件码组合将目的操作数的地位字节设置为 0 或 1,即满足设置条件时设为 1 ,不满足时设为 0 ,不改变其余字节。...使用寄存器传入参数时规定参数对应的寄存器如下: image.png 输出参数 当函数的输出参数 时,使用寄存器 rax 传递输出参数,当输出参数 > 1 (比如结构体中包含多个字段)个时,...高速缓存的大小/容量 指的是所有块的大小的和,标记位和有效位不包括在内,故 其中,SSS 为组数、EEE 为组相连路数、BBB 为每个缓存块的字节数。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【力扣算法07】之 2.两数相加 python

    如果某个链表已经遍历完了,我们可以将其缺失的位数视为0。 在每一位数字相加后,需要更新carry变量。当两个数的和超过9时,carry等于1,否则carry等于0。...这样可以确保将两个链表的所有位数都相加到结果链表中。 检查是否还有进位需要处理。如果carry大于0,说明还有进位,需要将其作为新的节点添加到结果链表的末尾。...在每一次循环中,根据当前节点是否为空,获取当前节点的值,并处理链表已经遍历完的情况。接着,计算当前位置的两个节点值以及进位的和,并更新进位值。...while l1 or l2: # 开始遍历两个链表,循环条件为两个链表中至少有一个未遍历完 x = l1.val if l1 else 0 # 获取当前节点l1的值,如果l1...carry = 0:初始化进位值为0。 while l1 or l2::开始遍历两个链表,循环条件为两个链表中至少有一个未遍历完。

    9910

    【C++】9道经典面试题带你玩转string类

    题目详情: 解题思路: 丢弃无用的前导空格 录入有效数据 判断正负性后返回数据 本题程序编写思路不难,需要注意的细节问题很多,稍微处理不好就可能导致一千多个测试点中的几个无法通过.因此大家在解题时一定要特别小心注释中标注的细节问题...题目详情: 解题思路: 这道题的解题思路比较暴力,就是用双循环找第一个唯一的元素即可,如果直到外层循环结束都没有找到,则返回-1即可....题目详情: 解题思路: 将字符串中的有效数据项(包括字母和数字字符)摘到新字符串中 验证摘出的新字符串是否是回文串 注意验证回文串时有三个条件(回文判断条件&&大小写回文判断条件&&数字回文判断条件,这三个有一个不满足就返回...&&大小写回文判断条件&&数字回文判断条件,这三个有一个不满足就返回ifalse if((*it!...题目详情: 解题思路: 对于这道题,我们以k为组距,分组,创建一个新的字符串,偶数组正序拷贝进新字符串,单数组反序拷贝进新字符串,最后一组单独考虑,是偶数就正序追加在字符串末尾,是单数就反序拷贝在字符串末尾即可

    9210

    数据的表示和运算

    进制转换 ◆ ◆ ◆ ◆ 计算机中,二进制是最广泛的一种数制,以高低电平来表示二进制。当数码很大时,书写不方便,从而引进八进制和十六进制,但是其实计算机内部都是二进制。...如果三个输入都是1,或者两个输入是1,一个输入是0,就会产生进位,表示为 ? 我们把AiBi叫做本地进位,也就是本地参与运算的两个数据响应的位就会产生的进位。另外Ai+Bi表示传送条件,用ti表示。...上图中,组和组之间采用串行进位,也就是说当第四组中的C3产生以后,把C3作为输入输入到第三组中,这个C3和第三组中的di,ti配合,生成第三组中的所有Ci,同样第二组,第一组同理。...双重分组跳跃进位链 ◆ ◆ ◆ ◆ n 位全加器分若干大组,大组中又包含若干小组。每个大组中小组的最高位进位同时产生。大组与大组之间采用串行进位。 ?...另外大组和大组之间采用串行进位的方式,也就是C15产生之后,作为输入,输入到第一大组中,用以产生第一大组中每个小组的最高位的进位和其他的进位。

    93620

    【C++经典例题】大数相加:从基础实现到性能优化

    问题背景 在实际编程中,我们常常会遇到需要处理大整数相加的情况。由于编程语言中基本数据类型所能表示的整数范围有限,当需要处理的整数超出这个范围时,我们就不能直接使用基本数据类型进行计算。...处理最后进位:循环结束后,我们需要检查是否还有进位,如果有则将其插入到字符串 s 的开头。...s 的末尾,这样时间复杂度为O(n) 。...循环结束后,由于结果是从低位到高位添加到字符串中的,所以我们需要将字符串反转,得到正确的顺序。 复杂度分析 这种实现方式的时间复杂度为 O(n),其中 是两个字符串中较长的那个的长度。...当我们使用 += 操作向字符串中添加字符时,如果字符串的容量不足,会自动进行扩容操作,而扩容操作会涉及到内存的重新分配和数据的复制,这会带来一定的性能开销。

    6310

    【2025-02-27】基础算法:反转链表

    return pre # 返回反转后的链表头结点 注意:反转结束后,从原来的链表上看:pre指向反转这一段的末尾;cur指向反转这一段后续的下一个节点 2,92....反转链表 II 按第1题的方法反转后: 要返回正确的答案,只需先让2指向5(cur),再让1指向4(pre) 特殊情况,如果left==1,则没有p0,所以可以添加一个哨兵节点,简化边界条件处理...K 个一组翻转链表 和第92题类似,关键在于要不断更新哨兵节点的位置,新哨兵节点的位置应该为上一次反转链表后的末尾,即:p0.next # Definition for singly-linked...while cur: # 统计链表长度 n += 1 cur = cur.next t = n // k # 需要反转的组数...doubleIt(self, head: Optional[ListNode]) -> Optional[ListNode]: # 方法一:看成是两个List相加 # 方法二:考虑到额外的进位

    6710

    Python日志之Python控制流(顺

    #不为0则为真 while a:  #当a为真时一直执行     print "helloo"     a=a-1 #a=0时停止循环 #输出结果: helloo helloo helloo helloo...while语句 Python中的while语句也是用来控制一段语句重复执行的 #while语句使用结构 ''' while 条件为真:     循环执行“该部分语句”直到条件不满足真 else:    ...1到n-1,不包括末尾     print "hello" #输出结果: 6个hello,而不是7个 for i in range(1,10,3):#(1,10,3)从1到10,3为步长,就是隔得数字大小...,常用语循环结构,当循环结构中出现break时应该强行停止中止循环,然后退出循环 (1).Break语句的使用 #break语句用法 break语句是强制停止循环执行的意思,break语句用在循环语句中...#输出结果: 从1到9,当a=9时就break #break语句在for循环中 for i in range(5,9):     print i     if i>6:         break#当达到

    68210

    “垫底”逆袭!从一次错误中转换思路迎来破局

    值得一提的是,这位同学为了参加arm64赛道,几乎是现学现用aarch64 指令集,瞬间新技能+1 或许,极客挑战赛的乐趣之一就在于通过不断学习、不断精钻细研,满足对技术的无穷探索欲。...MD5 内部状态直接预处理前 n-1 个块,塞进程序末尾;程序只需要求最后一个块即可。这里保证最后一个块不能超出 64 byte,最后控制得比较好,无需 pad 就满足了要求。...对于 i 的循环内的四种情况,我们不需要先比较跳转进去再跳转到结尾;因为我们都是设置 F 和 g ,于是可以: 啥都不管直接执行 case0 看看是否确实符合 case0 条件,是的话跳出 直接执行 case1...作为 4 的补充,一轮结束时轮换 ABCD 可用 extr 简化成三条指令。...不过赛后看了别人的思路后发现这里其实是可以通过碰撞成只有数字来减少更多代码的。 剩下还有些微优化,比如反着输出来少两次 write 传参,加法不考虑进位通过随机调整程序来撞出一个正确答案等等。

    53420

    链表算法题之中等级别,debug调试更简单

    一,两数相加 1.1 题目分析 题中写到数字是按照逆序的方式存储,从进位的角度看,两两节点相加我们是可以直接将进位传递到下一组两两节点相加。...比如题中第二组节点【4】和节点【6】相加结果为 10,而 10 就需要进位,也就是说该节点只能保存数字【0】,而进位【1】就要传递到下一组节点相加。 那再整理下思路。...我们再回到题中的案例,而上面说的位数不够也是需要考虑的一种情况。再一步步分析下如何进行两两节点相加。 第一组节点相加为2+5=7,不满足进位。...创建一个新的链表保存相加后的数,那此时链表第一个节点数为【7】。 接着是4+6=10,此时满足进位要求,按照题目要求和我们上面的分析,需要将低位【0】保存到节点,高位【1】传递到下一组节点。...第三步,3+4+1 最后看下运行结果 简单总结下,这道题并不算难,但需要考虑清楚当节点相加时是否需要进行补位的情况。

    38220

    每日三题-两数相加、反转链表、回文链表

    两数相加 解法一 使用双指针 每次l1、l2指针都向后移动,但是可能存在一个进位然后保存下来 所以当前值每次都是(l1.val+l2.val+进位)%10,而进位值就是(l1.val+l2.val...,pre指向上一个节点,每次ne临时指针指向下一个节点 cur 指向pre,然后pre = cur,cur = ne然后继续循环 因为返回条件是cur !...pre = cur; cur = ne; } return pre; } } 解法二 使用递归 链表反转,所以最后我们返回的节点就是末尾的那个节点...,每次返回末尾节点所以递归完成我们就是返回的最后一个节点 class Solution { public ListNode reverseList(ListNode head) {...当前节点的下个节点设置为null,避免链表成环 return ne; } } 解法三 循环头插法 每次到插入到res的下一个节点位置 class Solution {

    18730

    JavaScript秘密笔记 第四集

    循环条件: 判断循环能否继续执行的条件 只有满足条件,才可继续执行循环体 一旦条件不满足,就自动退出循环 2....循环变量: 循环条件中用作比较和判断的变量 初始值: 向着不满足循环条件的趋势不断变化, 每次递增/递减n 3....循环体: 循环反复执行的代码段 死循环: 循环条件永远满足,导致循环无法自动退出 如何: 3种: 1. while循环: 声明并初始化循环变量; while(循环条件){//只要/当...的时候...); 何时: 即使循环条件不满足,也至少能执行(试)一次时 while vs do while 当第一次循环条件都满足时,两者完全相同 只有第一次循环条件不满足时,差别: while是一次都不执行...,可执行多个短小的语句,用逗号分隔 强调: 绝不能改变源程序的执行顺序 强调: 如果for循环,简化到没有循环体,则结尾必须加分号 break和continue: break: 中断并退出当前结构的执行

    81920

    JavaScript之0.1+0.2=0.30000000000000004的计算过程

    ② //二进制 S = 0 满足条件 //十进制 E = 1019 不满足条件,需要转为 11 位的二进制 //二进制 M = 1001100110011循环0011 不满足条件...在线转换工具:在线转换工具(BigNumber时不准确)(https://tool.oschina.net/hexconvert/) ② 将1001100110011循环0011转为 52 位的二进制...---- 所以用一句话来解释为什么JS有精度问题: 简洁版: 因为JS采用Double(双精度浮点数)来存储number,Double的小数位只有52位,但0.1等小数的二进制小数位有无限位,所以当存储...52位时,会丢失精度!...考虑周到版: 因为JS采用Double(双精度浮点数)来存储number,Double的小数位只有52位,但除最后一位为5的十进制小数外,其余小数转为二进制均有无限位,所以当存储52位时,会丢失精度!

    1.2K30

    Python运算符与流程控制 #学习猿地

    | (a \| b) 输出结果 61 ,二进制解释: 0011 1101 | | ^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49...| (a \| b) 输出结果 61 ,二进制解释: 0011 1101 | | ^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49...作用区域,使用了相同的缩进,即有相同的作用域。 缩进:一个table距离或者四个空格。 注意:代码块/组中严格区分空格和table,不能混合使用,必须只使用一种方式缩进!...带有变化条件的循环 1.声明变量var 2.while 进行变量var的判断: 代码内容 代码内容 代码内容 ... 3.变量...代码内容,可以使用自定义变量 ### else语句的应用 循环中可以使用else语句 while 条件表达式: 循环语句 循环语句 循环语句

    43100

    plc的移位指令C语言实现,移位指令做流水灯-PLC中使用移位指令是如何实现移位动作的-电气资讯 – 电工屋…「建议收藏」

    如:MOV AX,62H SHR AX,1 当移位数大于1时,需要先将移位数放进CL中然后再进行移位操作。...如:MOV AL,62H MOV CL,4 SHR AL,CL 条件标志位 CF(进位标志) = 移入的数值 1 CNT=1时,最高有效位的值发生变化 0 CNT=1时,最高有效位的值不变 移位指令:...SF(符号标志)、ZF(零标志)、PF (奇偶标志)根据移位结果设置,AF(辅助进位标志)无定义 循环移位指令: 不影响 SF、ZF、PF、AF 条件标志位应用于具体的操作数中使用,以下叙述中未详细写明...ROL:循环左移,最高位进到CF的同时补到最低位; ROR:循环右移,最低位进到CF的同时补到最高位; RCL:带进位循环左移,最高位进到CF的,同时CF值补到最低位; RCR:带进位循环右移,最低位进到...影响O, S, Z, P, C标志位 由于以上只移动1位,没有涉及使用CL,所以CL的值就不用考虑了。 当使用SHL DL, CL移多位时,相当于多次一位的移动。 建议,还是看看书吧。

    1.5K10

    看这里一篇就能让你明白其中的奥妙

    使用集合记录出现过的数字,如果平方和重复出现,则说明陷入循环,不是快乐数。 如果最终平方和为1,则是快乐数。 通过集合实现环检测,当一个数字再次出现时,表示开始循环,这样可以避免无限循环。...// 当快指针和慢指针相遇时,如果等于1则是快乐数,否则存在循环 while (fast !...如果和不满足条件,则将 i 右移,直到满足条件或 i 与 j 相遇。 通过这种方式可以在排序后的数组中快速找到所有满足条件的三角形组合。...// 那么从 left 到 right 之间的所有组合都能满足条件 n += right - left; // 右指针左移...每次找到一组符合条件的四元组后,将其加入结果集中,同时移动指针以避免重复解。 为了减少不必要的计算,可以在循环中加入剪枝操作,例如在固定的两个数过大或过小时直接跳过当前循环,优化运行时间。

    28010

    Python运算符与流程控制 #学习猿地

    | (a \| b) 输出结果 61 ,二进制解释: 0011 1101        | | ^   | 按位异或运算符:当两对应的二进位相异时,结果为1       | (a ^ b) 输出结果 49...| (a \| b) 输出结果 61 ,二进制解释: 0011 1101        | | ^   | 按位异或运算符:当两对应的二进位相异时,结果为1       | (a ^ b) 输出结果 49...作用区域,使用了相同的缩进,即有相同的作用域。   缩进:一个table距离或者四个空格。   注意:代码块/组中严格区分空格和table,不能混合使用,必须只使用一种方式缩进!...带有变化条件的循环     1.声明变量var     2.while 进行变量var的判断:       代码内容       代码内容       代码内容       ...       3.变量...      代码内容,可以使用自定义变量 ### else语句的应用   循环中可以使用else语句     while 条件表达式:       循环语句       循环语句       循环语句

    49720

    两数相加

    先将l1和l2头节点的值加起来赋值给新链表的头节点 遍历两个链表,只要有一个链表还没有遍历到末尾,就继续遍历 2.每次遍历生成一个当前节点cur的下一个节点,其值为两链表对应节点的和再加上当前节点cur...产生的进位 更新进位后的当前节点cur的值 3....,那么就在l2多出l1的位数补上0 //例如:l1--->123 l2---->123456 ,那么l1补上0后的结果为123000, l1+l2=123000+123456 //因此循环结束的条件是...//如果循环结束后,cur的val值大于等于10,比如910+210,最后9+2=11,大于10,因此应该还要再进一位,到千位 if (cur->val >= 10) { cur->...next = new ListNode(cur->val/10);//因为还要再次前进一位到千位,所以还要再次开辟一个新节点,存放千位 cur->val %= 10;//当前百位的11,再进位结束后

    74910
    领券