一些特殊的位运算
异或: 1.二进制运算时,相同为0,不同为1 2.整数自己和自己异或时得0 3.任意整数与0异或时得整数本身 从而实现两变量在无中间变量的情况下的交换(int): a=a^b; b=a^b; a=a^b; x & -x: 保留二进制数最后一位出现1的位置,其余位置0; 具体证明可用奇偶数分别验证; x&(x-1): 消除二进制数最后…
|
|
数组中数字出现的次数
前置知识:yvanwzw.top/index.php/2021/03/17/一些特殊的位运算/ 原题1: 来源:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/ 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个…
|
|
和为s的两个数字(对撞双指针法的验证)
原题:https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/ 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9输出:[…
|
|
求1+2+…+n(不使用判断语句、循环语句与乘除法)
原题:https://leetcode-cn.com/problems/qiu-12n-lcof/ 题目描述:求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 属于初见一脸懵逼,仔细一想很简单的题,考的语言特性 据题意得可能要用到的几种东西:1.位运算(代…
|
|
C++部分函数记录
#include<math.h> double ceil(double x) //向上取整 double floor(double x) //向下取整 2.辗转相除法化简分数(先用trans化为真分数) class node { public: bool ifPosi{ true };//true=posi false=nega long l…
|
|
合并两个排序的链表的递归解
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (!l1 || !l2) return !l1 ? l2 : l1; if (l1->val < l2->val) { l1->next = mergeTwoLists(l1->next, l2); ret…
|
|