剑指offer和其他笔试题
普通网友
这个作者很懒,什么都没留下…
展开
-
剑指offer—-和为S的两个数字
剑指offer—-和为S的两个数字题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。答案://C++/*用两个指针从两端向中间逼近如果两数之和等于所要找的数,输出并跳出循环,因为先找到的两数之积一定小于后找到的两数之积(1,2,3,4,5,6)找原创 2016-08-10 11:46:18 · 14256 阅读 · 0 评论 -
字符串全排列
一、字符串的排列 用C++写一个函数, 如 vector Permutation(string str),打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba 二、全排列的递归实现 为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都是1原创 2016-09-03 15:00:47 · 14419 阅读 · 0 评论 -
求数组中数量超过一半的数
//思路:数量超过一半的数,比其他所有数的和都多int MoreThanHalfNum_Solution2(int* numbers, int length){ if(CheckInvalidArray(numbers, length))//参数规范检查 return 0; int result = numbers[0]; int times = 1;原创 2016-09-04 16:22:45 · 29042 阅读 · 0 评论 -
剑指offer----第一个只出现一次的字符
在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置。 int FirstNotRepeatingChar(string str) { if(str.empty()) return -1; map<char, int> mp; for(int i =原创 2016-09-05 17:46:59 · 14127 阅读 · 0 评论 -
电话号码身份
C++代码实现:#include <iostream>#include <string>#include <algorithm>#include <vector>#include <map>using namespace std;int main(){ map<string, string> mp; map<string, string>::iterator it;原创 2016-09-24 02:28:06 · 14533 阅读 · 0 评论 -
剑指offer----整数中1出现的次数(从1到n整数中1出现的次数)
设N = abcde ,其中abcde分别为十进制中各位上的数字。 如果要计算百位上1出现的次数,它要受到3方面的影响:百位上的数字,百位以下(低位)的数字,百位以上(高位)的数字。 ①如果百位上数字为0,百位上可能出现1的次数由更高位决定。比如:12013,则可以知道百位出现1的情况可能是:100~199,1100~1199,2100~2199,,…,11100~11199,一共1200个。可原创 2016-09-21 22:14:22 · 6543 阅读 · 0 评论