
面试题
weizhengbo
开始我的IT之旅!
展开
-
求100W个数中的前K个最大的数
#include<iostream>#include<windows.h>using namespace std;//求100W个数中的前K个最大的数//挨个遍历排序:100w个数太多,内存不够,而且遍历排序效率太低//建大堆:只能选出最大的那个数//可选方案:建K个数的小堆//首先取这100w个数中的前K个数建立最小堆,即长度为K的数组的首元素为最小的元素//然后依次取剩下的元素,原创 2017-05-12 12:45:43 · 695 阅读 · 1 评论 -
如何在一个相邻元素差的绝对都是1的数组中快速查找一个数?
#include#include#includeusing namespace std;/*有这样一个数组A,大小为n,相邻元素差的绝对& 20540;都是1。如:arr={4,5,6,5,6,7,8,9,10,9}。现在,给定arr和目标整数num,请找到num在arr中的位置。除了依次遍历,还有更好的方法么?*/int Find_Value(int *arr, si原创 2017-04-22 00:39:36 · 648 阅读 · 0 评论 -
求数组子数组之和最大值
//给定一个数组,如何找出连续下标所对应的元素相加之和最大的一组下标 //求数组子数组之和最大值(way1) int Max_sum(int *arr, size_t size) { int max_sum = 0; for (int i = 0; i < size; i++) { int sum = 0; for (int j原创 2017-04-25 01:44:24 · 362 阅读 · 0 评论 -
求一个数组中的和为任意一个数的两个元素
求一个数组中的和为任意一个数的两个元素void Find_Sum(int *arr, int size, int sum){ for (int i = 0; i < size; i++) { for (int j = i+1; j < size; j++) { if (arr[i] + arr[j] == sum)原创 2017-04-25 02:23:24 · 904 阅读 · 0 评论 -
给定N张扑克牌和一个随机函数,设计一个洗牌算法
void shuffle(char cards[], size_t size){ int count = 0; if (size <= 1) return; for (size_t i = 0; i< size; i++) { //交换第i张和另外一张第i到size随机牌的两张牌 int idx = rand() %原创 2017-05-18 02:22:07 · 787 阅读 · 0 评论 -
模拟实现atoi
//注意到细节问题:/*一、函数参数1、形参虚const修饰2、注意对形参指针判空二、需要考虑到的细节1、负数和0(注意区别传入字符‘0’和异常时返回值)2、空字符串3、溢出问题4、输入字符串非非数字字符*/int G_flag =0;//区别空串long long strToDig(const char*digit, bool minus){ long long原创 2017-06-03 22:00:02 · 313 阅读 · 0 评论 -
数组系列面试题
以下是我总结的关于高频率数组系列的面试题,如有不足之处,希望大家指出#include<iostream>#include<windows.h>#include<vector>using namespace std;#include<string.h>#include<sstream>#include <algorithm>/************************求数组中出现次原创 2017-09-01 20:58:21 · 1050 阅读 · 0 评论