当前位置:首页 » 面试笔试 - 第1页

06月04日

找出数组中有3个出现一次的数字

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 3886次

题目:一个int数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。下面要来看下如果找出这个与另外两个数的该bit位不同的数。先看第一种情况,如果a,b,c三个数中,有两个该bit位为0,另一个为1,我们遍历数组,分别统计该数组元素中该bit位为1和0的元素个数,分别设为count1和count0,并同时将所有该bit位为1的元素异或,所有该bit位为0的元素异或,得到的结果分别设为temp1和temp0。如果count1为奇数,则可能有两种情况,a,b,c三个数的该bit位全为1,或者有两个为0,一个为1,如果有temp0==0,则说明是前一种情况(a,b,c的该bit位全为1的话,所有该bit位为0的每个元素出现了两次,因此异或后的结果为0),即3个只

03月20日

不用加减乘除做加法

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 13633次
不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。这道题看起来非常有趣,既然做加法,但却不让使用+、-、*、/四则运算符号,很多同学看了一眼就懵逼了,这可难倒八戒了。我们来分析一下,如果不让用四则运算符合,那显然就是用递归了。为啥呢?原因很简单,递归程序里可以不需要运算符合,只要有递归结束条件即可。举个例子,比如2+3=?2用二进制表示是00103用二进制表示是0011不用四则运算,我们就该想到使用逻辑运算符,与、或、非、异或,同或等。显然,我们需要用到与、异或异或相当于不带进位的加法:1^0=1,0^1=1,0^0=0,1^1=0也就是:与运算符正好我们可以用来求进位:1&0=0,0&1=0,0&0=0,1&1=1&nbs

03月20日

快速排序基本思想及代码实现-史上最通俗易懂的

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 14495次
快速排序基本思想及代码实现-史上最通俗易懂的

1、算法思想    快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。(1)分治法的基本思想    分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。(2)快速排序的基本思想    设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为:①分解:      在R[low..high]中任选一个记录作为基准(Pivot),以

03月20日

滑动窗口的最大值

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 13839次

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1},{2,3,[4,2,6],2,5,1},{2,3,4,[2,6,2],5,1},{2,3,4,2,[6,2,5],1},{2,3,4,2,6,[2,5,1]}。方法一:一个i指示每个窗口的起点,在i循环内j遍历该窗口找出最大值。改进的话,先找出第一个窗口中的最大值,然后窗口移动的时候观察上个窗口的最大值是否移除,如果移除就在新

03月19日

从尾到头打印链表

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 13579次

题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。有三种思路,第一就是利用栈先入后出的特性完成,第二就是存下来然后进行数组翻转。第三是利用递归。栈思路:class Solution {public:    vector<int> printListFromTailToHead(ListNode* head) {        vector<int> value;        

03月19日

把二叉树打印成多行

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 13721次
把二叉树打印成多行

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。void BinaryTreeLevelOrder(BTNode* root){    Queue q;    //树为空,直接返回    if (root == NULL)    {        return;    }  &nbs

03月15日

斐波那契数列-编程求解方法大全

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 14133次
斐波那契数列-编程求解方法大全

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39直接上我的代码:int Fibonacci(int n) {        int sum =0,l=0,r=1;        if(n==1)            return 1;  &nb

03月15日

二进制中1的个数

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 13521次
二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。时间限制:1秒 空间限制:32768K直接上代码吧:   int  NumberOf1(int n) {         int i;         int num=0;         for(i=0;i<32;i++) 

03月14日

程序员面试题-变态跳台阶问题

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 13658次

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:f(1)=1f(2)=f(2-1)+f(2-2)    //f(2-2)表示2阶一次跳2阶的次数。f(3)=f(3-1)+f(3-2)+f(3-3) ...f(n)=f(n-1)+f(n-2)+f(n-3)+...+f(n-(n-1))+f(n-n) 说明: 1)这里的f(n)代表的是n个台阶有一次1,2,...n阶的跳法数。2)n=1时,只有1种跳法,f(1)=13)n=2时

03月14日

程序员面试题-跳台阶问题

发布 : xiaohuanglv | 分类 : 面试笔试 | 评论 : 0 | 浏览 : 13702次

题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。题目解析:比如只有一个台阶,这个时候这只青蛙没有第二种选择,只能一次跳1级台阶,也就是只有一种跳法。比如共有2个台阶呢?此时,这只青蛙就有两种选择了,第一种选择是一次跳1级,跳两次。第二种选择是一次跳2级,跳一次。.......那么共有n级台阶呢,通过大脑想这个过程实在是过于复杂,尤其n特别大时,已经超过了人脑的计算范围,那么我们就只好借助计算机的超高能力的计算来得到结果了,我们分析一下。倒过来思考一下,比如这只青蛙已经跳到了第n级台阶,此时它正站在第n级台阶上沾沾自喜呢,那么,它的上一步是什么呢?因为青蛙一次只能跳1或2级台阶,所以,上一步这只青蛙一定在第n-1或

网站分类

标签列表

最近发表

全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试

本站资源大部分来自互联网,版权归原作者所有!