位运算
按位运算符是把数字看作二进制来进行计算
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100 #按位与运算符
a|b = 0011 1101 #按位或运算符
a^b = 0011 0001 #按位异或运算符
~a = 1100 0011 #按位非运算符
知识点补充:
线性时间复杂度,就是时间复杂度为线性阶O(n)。
同一问题可用不同算法解决,而一个算法的质量优劣(或者说算法复杂度)可由时间复杂度和空间复杂度来评价。
算法的时间复杂度是指执行算法所需要的计算工作量,即度量算法执行的时间长短,它定量描述了该算法的运行时间。
按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),…。
随着问题规模n的不断增大,时间复杂度不断增大,算法的执行效率越低。
leetcode 136
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
class Solution {
public int singleNumber(int[] nums) {
int ret = nums[0];
for (int i = 1; i < nums.length; ++i) {
ret ^= nums[i];
}
return ret;
}
}