java基础编程(1):无缓存交换
来源:互联网 发布:linux 创建进程 编辑:程序博客网 时间:2024/05/04 11:46
1.请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值。
给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回交换后的数组。
测试样例:
[1,2]
返回:[2,1]
方法一:大数情况下可能溢出
public class One {public int[] exchangeAB(int[] AB) { // write code here //思路一:a=a+b;b=a-b;a=aAB[0]=AB[0]+AB[1];AB[1]=AB[0]-AB[1];AB[0]=AB[0]-AB[1];return AB;}}方法二:异或
public class One {public int[] exchangeAB(int[] AB) { // write code here //思路二:通过异或方式AB[0]=AB[0]^AB[1];AB[1]=AB[1]^AB[0];AB[0]=AB[0]^AB[1]; return AB;}}
测试类:
import java.util.*;public class Main {public static void main(String[] args){int[] AB={1,2};One one=new One();AB=one.exchangeAB(AB);System.out.println(Arrays.toString(AB));}}
收获:
1.Arrays.toString(AB)//输出数组、刚开始用傻不隆冬不会输出数组啊、以为跟C++一样把数组名(首地址)给他就行、、结果IDE出来的都是地址码
2.异或的用处:当且仅当只有一个表达式的某位上为 1 时,结果的该位才为 1
(1)跟1异或取反
(2)跟自己异或置0
特定位取反、无缓存交换、两值相等、
阅读全文
0 0
- java基础编程(1):无缓存交换
- 无缓存交换
- Java基础----值交换
- Java基础--并发编程基础(1)
- 程序员面试金典——无缓存交换___
- 程序员面试金典:无缓存交换、井字棋
- java面试基础120题及答案(无编程题)
- Java并发编程基础构建模块(06)——高效缓存总结示例
- Java并发编程基础构建模块(06)——高效缓存总结示例
- java网络编程基础夯实04-DNS缓存
- 《并发编程》--20.无锁的并发策略(比较交换 CAS)
- java编程基础1
- java编程基础1
- java基础编程#1
- java基础编程题(1)
- java网络编程(1):基础
- (1)Java网络编程----网络基础
- java的编程基础(1)
- @rownum
- HDU 1054 Strategic Game (树形DP)
- MyBatis 框架 1
- 【微信开发学习笔记(二)】:上传图片后显示不了
- cors跨域ie9失败
- java基础编程(1):无缓存交换
- QQ第三方友盟分享
- 如何转换 CGCS2000坐标系
- RabbitMQ (三) 发布/订阅
- Java序列化和反序列化
- div+css布局:文字垂直居中
- MySQL数据库的基本操作
- window对象的open方法
- c指针笔记