写点什么

【LeetCode】数组异或操作 Java 题解

用户头像
HQ数字卡
关注
发布于: 2021 年 05 月 07 日

题目描述

给你两个整数,n 和 start 。


数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。


请返回 nums 中所有元素按位异或(XOR)后得到的结果。


示例 1:
输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XOR 运算符。
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xor-operation-in-an-array著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码

思路分析

  • 这个题目是一个简单题目,直接按照题意可以得出正确的解决方法。

AC 代码

    public int xorOperation(int n, int start) {        int ans = 0;        int[] nums = new int[n];        for (int i = 0; i < n; i++) {            ans ^= (start + 2 * i);        }        return ans;    }
复制代码

总结

  • 上述算法的时间复杂度是 O(n), 空间复杂度是 O(n)

  • 位运算就是基于整数的二进制表示进行的运算。由于计算机内部就是以二进制来存储数据,位运算是相当快的。

    基本的位运算共 6 种,分别为按位与、按位或、按位异或、按位取反、左移和右移。

    异或运算只有两个对应位不同时才为 1。

  • 坚持每日一题,加油!

发布于: 2021 年 05 月 07 日阅读数: 9
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】数组异或操作Java题解