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

小朋友学经典算法(13):交换

在学C语言的时候,学过交换:《小朋友学C语言(25):交换》 https://www.jianshu.com/p/64bc70f0abfe 在学C++的时候,也学了交换:《小朋友学C++(14...):交换》 https://www.jianshu.com/p/9a071870e0a0 这里咱们要考虑的是,个数相等的交换情况。...********** 2 1 4 3 **********交换相同的值********** 5 5 6 6 0 0 0 0 9 9 结果显示,前组数值不同的个数,能交换成功。...后五组相同的值,交换成功的有3组。不成功的有组,并且值都变成了0。 这是什么原因呢? 观察最后三对的,都是数组里的同一元素交换。...可见自己写的个函数,一定存在bug。 仔细观察,发现a3 = 5, b3 = 5,这是个不同的变量(在内存里的地址不同),而myswap2(d[0], d[0]),这是对同一个地址里的交换

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

    Python求解之和

    题目描述: 写一个函数,此函数要实现以下功能: 给一个列表,并且给一个目标数字,如果列表里的个数字之和等于目标数字,返回那个数字的索引值。...一、层for循环遍历列表 思路:先拿出列表里的第0个数字,依次尝试和第1个、第2个……第n个相加,看能否等于目标数字,如果有某个组合等于目标数字,就返回这个组合的个索引值,如果都不行,再拿出第1个数字...#nums参数需要一个列表,target参数就是我们想实现的和的值 def twoIndices(nums,target): '''这是寻找和为目标值的个数的索引的函数''' for...如果存在,就返回个数字的索引,不存在,就把取出来的这个数字作为键,它的索引作为值存进字典,并取出下一个数字,重复刚才的操作,直到找到合适的个数字或者全部数字都看过一遍为止。...#nums参数需要一个列表,target参数就是我们想实现的和的值 def twoIndices(nums,target): '''这是寻找和为目标值的个数的索引的函数''' #定义一个用于存放数字和索引的字典

    32320

    C 关于使用异或运算交换的值

    异或运算可以达到交换的目的,代码如下: ? 但不推荐使用这种方式,附上常用的临时变量方法对比说明。 临时变量方法: ?...对于临时变量法,每次赋值只要读取一个变量的值到寄存器,然后再从寄存器写回到另一个变量中即可,前后涉及次内存写入操作;但是对于异或运算操作,每次都需要读取个数据到寄存器中,再进行运算操作,之后把结果写回到变量中...如果使用C语言实现上述种方法,并用gcc编译器编译,可以使用命令 gcc -S swap.c 查看相应的汇编代码,临时变量法代码行数更少,另外使用 gcc 编译器时,用异或运算交换数组会出错,参见链接...在不引入临时变量的基础上,交换的值还可以使用三次加减法,代码如下: ? 这种方式同样需要三次内存写入操作,同时代码可读性也较差。...最后附上张三种方法编译后对应汇编代码对比图(平台:Ubuntu14.04,gcc 4.8.4),图中 swap1.c 文件对应临时变量法,swap2.c 文件对应加减方法,swap3.c 文件对应异或方法

    98740

    Python链表之之和

    之和 ---- 【今日知图】 标记 某一块代码可能需要稍后处理 使用m增加一个标记,标记名称可以是a~z和A~Z之间的任意一个字母; 添加标记了的行如果被删除,标记同时被删除; 后面的标记名与前面一致会覆盖前面相同的标记...; mx mark 添加标记x,x可以是a~z和A~Z之间的任意一个字母 'x 直接定位到标记x所在位置 ---- 0.说在前面1.之和2.思路分析3.实现方法4.算法分析5.作者的话 ----...0.说在前面 又到了新的一周,我们这周的第一篇LeetCode,有关链表话题,在python中如何操作链表,定义链表呢?...下面一起来看本次刷题,之和!!! 1.之和 问题 给出个 非空 的链表用来表示个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 单位 数字。...示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 2.思路分析 【方法一】 将l1链表的取出,组成一个

    51550

    python3相加

    相加 给你个 非空 的链表,表示个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将个数相加,并以相同形式返回一个表示和的链表。...你可以假设除了数字 0 之外,这个数都不会以 0 开头。 ?...2.遍历个链表,只要有一个还没有遍历完就继续遍历 3.每次遍历生成一个当前节点cur的下一个节点,其值为链表对应节点的和再加上当前节点cur产生的进位 4.更新进位后的当前节点cur的值 5....循环结束后,因为首位可能产生进位,因此如果cur.val是位数的话,新增一个节点 6.返回头节点 由题目注释可以看出listNode这个类是用来创建链表的,默认next=None,val=0.

    32220

    之和,之积

    已知个1~30之间的数字,甲知道之和,乙知道之积。 甲问乙:”你知道是哪个数吗?”乙说:”不知道”; 乙问甲:”你知道是哪个数吗?”...甲说:”也不知道”; 于是,乙说:”那我知道了”; 随后甲也说:”那我也知道了”; 这个数是什么?...答案: 答案1:为x=1,y=6;甲知道和A=x+y=7,乙知道积B=x*y=6 答案2:为x=1,y=8;甲知道和A=x+y=9,乙知道积B=x*y=8 解: 设这个数为x,y...甲知道之和 A=x+y; 乙知道之积 B=x*y; 该题分种情况 : 允许重复, 有(1 <= x <= y <= 30); 不允许重复,有(1 <= x < y <=...2)由题设条件:甲不知道答案 A=x+y 解不唯一 => A >= 5; 分种情况: A=5,A=6时x,y有双解 A>=7 时x,y有三重及三重以上解 假设

    36030
    领券