数据结构
文章平均质量分 63
社会废人
万物皆虚,万事皆允
展开
-
快慢指针经典应用
文章目录FastSlowPointerFastSlowPointer快慢指针概念快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。 例如,可以让快指针每次沿链表向前移动2,慢指针每次向前移动1次。经典应用判断单链表是否为循环链表思想: 当链表中存在环时,快指针与慢指针一定会在某一个结点处相遇,就像在操场跑步,快的人将会追上慢的人,即他们一定会相遇。public class ListNode<T> { T val; ListNode<T> next;原创 2022-01-26 17:48:20 · 628 阅读 · 0 评论 -
逻辑运算符操作二进制位
文章目录加法运算统计一个整数的二进制串中1的个数加法运算问题:不使用+、-、*、/来完成加法运算。解法:public int Add(int num1,int num2) { while (num2 != 0) { int temp = num1 ^ num2; int tmp = (num1 & num2) << 1; num1 = temp; num2 = tmp;原创 2021-07-27 14:44:57 · 205 阅读 · 0 评论 -
移位操作判断数字的奇偶
判断结果(number & 1) == 0number为偶数(number & 1) == 1number为奇数支持这种算法的基础有:1.偶数的二进制串的最后一位为0;奇数的二进制串的最后一位为12.& :只有双方均为true时结果为true,否则为false。下面是100以内的二进制串表偶数二进制串奇数二进制串002101141003116110510181000...原创 2021-07-19 13:38:46 · 713 阅读 · 0 评论 -
异或(^)运算
异或(^)a^b:将a和b都用2的从大到小的幂次的和来表示,然后将两者中相同的幂次数除去,最后将a和b剩余的幂次相加得到结果。支持这种算法的基础:异或运算,相同为0,不同为1。一个二进制数可以写成多个二进制数相加的形式,将加数写成十进制后依然不会改变二进制数的大小。举例:96^2596 : 1100000 ==> 1000000+100000 ==>64+3225 : 11001 ==> 10000+1000+1 ==>16+8+196^25 = 64+原创 2021-07-15 19:12:52 · 4365 阅读 · 1 评论