• 面试题 16.01. 交换数字


    编写一个函数,不用临时变量,直接交换numbers = [a, b]ab的值。

    示例:

    输入: numbers = [1,2]
    输出: [2,1]
    

    提示:

    • numbers.length == 2

    这是一道看起来非常简单但是我觉得也非常启迪思维的题目

    方法一:数学计算

    //此方法要充分考虑到溢出的情况
    vector<int> swapNumbers(vector<int>& numbers) { if((numbers[0]<=0&&numbers[1]<=0)||(numbers[0]>=0&&numbers[1]>=0)) { numbers[0]=numbers[0]-numbers[1]; numbers[1]=numbers[1]+numbers[0]; numbers[0]=numbers[1]-numbers[0]; } else { numbers[0]=numbers[0]+numbers[1]; numbers[1]=numbers[0]-numbers[1]; numbers[0]=numbers[0]-numbers[1]; } return numbers; }

    方法二:异或运算

    //一个数与自己异或为0,一个数与0异或不变。这种特殊性质使得异或运算对于特定类型的题目有奇效,比如求数组中出现次数为2的元素
    vector<int> swapNumbers(vector<int>& numbers) { numbers[0] ^= numbers[1]; numbers[1] ^= numbers[0]; numbers[0] ^= numbers[1]; return numbers; }
  • 相关阅读:
    链接唤醒IOSApp
    C#抽象属性
    c#结构体与类的区别
    广告学入门
    个性化推荐十大挑战[
    MapReduce 读取和操作HBase中的数据
    mysql sql命令大全
    从B 树、B+ 树、B* 树谈到R 树
    MapReduce操作HBase
    Meanshift,聚类算法
  • 原文地址:https://www.cnblogs.com/Dancing-Fairy/p/12704561.html
Copyright © 2020-2023  润新知