最接近的数 牛客网 程序员面试金典 C++ Python 题目描述 有一个正整数,请找出其二进制表示中1的个数相同.且大小最接近的那两个数.(一个略大,一个略小) 给定正整数int x,请返回一个vector,代表所求的两个数(小的在前).保证答案存在. 测试样例: 2 返回:[1,4] C++ class CloseNumber { public: //run:3ms memory:504k vector<int> getCloseNumber(int x) { vector<int&…
奇偶位交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写程序交换一个数的二进制的奇数位和偶数位.(使用越少的指令越好) 给定一个int x,请返回交换后的数int. 测试样例: 10 返回:5 C++ class Exchange { public: //run:2ms memory:480k int exchangeOddEven(int x) { return ((x & 0xaaaaaaaa) >> 1 | (x & 0x55555555) <&l…
第K个数 牛客网 程序员面试金典 C++ Python 题目描述 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测试样例: 3 返回:7 C++ class KthNumber { public: //run:3ms memory:504k int findKth(int k){ vector<int> res(k+1,0); res[0] = 1; int t3 = 0; int t5 = 0; int t…
无判断max 牛客网  程序员面试金典 C++ Python 题目描述 请编写一个方法,找出两个数字中最大的那个.条件是不得使用if-else等比较和判断运算符. 给定两个int a和b,请返回较大的一个数.若两数相同则返回任意一个. 测试样例: 1,2 返回:2 C++ class Max { public: //run:5ms memory:472k int getMax(int a, int b) { b = a-b;//此时b>>31为1则b小于0即a<b,若b>>3…
平分的直线 牛客网 程序员面试金典 C++ Python 题目描述 在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分.假定正方形的上下两条边与x轴平行. 给定两个vecotrA和B,分别为两个正方形的四个顶点.请返回一个vector,代表所求的平分直线的斜率和截距,保证斜率存在. 测试样例: [(0,0),(0,1),(1,1),(1,0)],[(1,0),(1,1),(2,0),(2,1)] 返回:[0.0,0.5] C++ /* struct Point { int x;…
字符串压缩 牛客网 程序员面试金典 C++ Python 题目描述 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能.比如,字符串"aabcccccaaa"经压缩会变成"a2b1c5a3".若压缩后的字符串没有变短,则返回原先的字符串. 给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串. 测试样例 "aabcccccaaa&qu…
回文链表 牛客网 程序员面试金典  C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例: {1,2,3,2,1} 返回:true {1,2,3,2,3} 返回:false class Palindrome { public: // run:4ms memory:492k bool isPalindrome(ListNode* pHead) { if(NULL == pHead) re…
双栈排序 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中. 给定一个int[] numbers(C++中为vector&ltint>),其中第一个元素为栈顶,请返回排序后的栈.请注意这是一个栈,意味着排序过程中你只能访问到最后一个元素. 测试样例: [1,2,3,4,5] 返回:[5,4,3,2,1] C++ class TwoStacks { pub…
原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniString,请返回一个string,为翻转后的字符串.保证字符串的长度小于等于5000. 测试样例: "This is nowcoder" 返回:"redocwon si sihT" C++ class Reverse { public: //run:4ms memor…
高度最小的BST 牛客网 程序员面试金典 C++ Python 题目描述 对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树. 给定一个有序序列int[] vals,请返回创建的二叉查找树的高度. C++ class MinimalBST { public: //run:3ms memory:476k int buildMinimalBST(vector<int> vals) { int height=0; int size = vals.size();…