随笔分类 - 编程
摘要:面试题 05.03. 翻转数位 给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。 示例 1: 输入: num = 1775(110111011112)输出: 8示例 2: 输入: num = 7(01112)输出: 4 分析: 维护两个变量
阅读全文
摘要:Bitset A bitset stores bits (elements with only two possible values: 0 or 1, true or false, ...). (1)构造函数 #include <iostream> // std::cout #include <s
阅读全文
摘要:面试题 05.06. 整数转换 整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。 示例1: 输入:A = 29 (或者0b11101), B = 15(或者0b01111) 输出:2示例2: 输入:A = 1,B = 2 输出:2 class Solution { public:
阅读全文
摘要:371. 两整数之和 不使用运算符 + 和 - ,计算两整数 a 、b 之和。 示例 1: 输入: a = 1, b = 2输出: 3示例 2: 输入: a = -2, b = 3输出: 1 解题思路 a ^ b可以得到两数相加不进位的加法结果 (a & b
阅读全文
摘要:1356. 根据数字二进制下 1 的数目排序 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1: 输入:arr = [0,1,2,3,4,5,6,
阅读全文
摘要:数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2 #include<iostream> #include<bit
阅读全文
摘要:762. 二进制表示中质数个计算置位 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。 (注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有,1 不是质数。) 示例 1: 输入: L = 6, R = 1
阅读全文
摘要:476. 数字的补数 给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。 示例 1: 输入: 5 输出: 2解释: 5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2: 输入: 1 输出: 0解释: 1 的二进制表示为 1(没有前导零位),其补数为
阅读全文
摘要:面试题 05.07. 配对交换 配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。 示例1: 输入:num = 2(或者0b10) 输出 1 (或者 0b01)示例2: 输入:num = 3 输出:3 32位二进制数偶数位为1
阅读全文
摘要:面试题 16.07. 最大数值 编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。 示例: 输入: a = 1, b = 2 输出: 2 解题思路 代码: #include<math.h> int maximum(int a, int b){ // double
阅读全文
摘要:剑指 Offer 15. 二进制中1的个数 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001011 输出:3解
阅读全文
摘要:n&(n-1)的用途 1,求一个int类型数是否为2的幂 当n=4时,二进制为:0100 n-1=3,二进制为:0011 则:n&(n-1)==0 当n=8时,为1000 n-1=7,为0111 则n&(n-1)==0 再举个反例:当n=5,为0101 n-1为0100 则n&(n-1)=0100=
阅读全文
摘要:461. 汉明距离 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 注意:0 ≤ x, y < 231. 示例: 输入: x = 1, y = 4 输出: 2 解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑ 代码:
阅读全文
摘要:1486. 数组异或操作 给你两个整数,n 和 start 。 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。 请返回 nums 中所有元素按位异或(XOR)后得到的结果。 示例 1: 输入:n = 5, start =
阅读全文
摘要:墙壁涂色 问题描述 蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 3 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 n 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。例如,当 n=5 时,下面就是一种合法方案。|蓝|红|黄|红|黄|由于墙
阅读全文
摘要:11. 盛最多水的容器 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且
阅读全文
摘要:排序算法 冒泡排序 O(n2) 选择排序 O(n2) 插入排序 O(n2) 希尔排序 O(n1.5) 快速排序 O(N*logN) 归并排序 O(N*logN) 堆排序 O(N*logN) 基数排序 O(d(n+r)) 一. 冒泡排序(BubbleSort) 基本思想:两个数比较大小,较大的数下沉,
阅读全文
摘要:451. 根据字符出现频率排序 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1: 输入: "tree" 输出: "eert" 解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2: 输入: "c
阅读全文
摘要:剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1]示例 2: 输入:arr =
阅读全文
摘要:List双向链表 再谈链表 List链表的概念再度出现了,作为线性表的一员,C++的STL提供了快速进行构建的方法,为此,在前文的基础上通过STL进行直接使用,这对于程序设计中快速构建原型是相当有必要的,这里的STL链表是单链表的形式。 头文件 头文件:#include<list> 初始化 格式为:
阅读全文