算法
无牛刀
到底程序是否是一生要走的路
展开
-
一道解读百度面试题
题目:一个无序数组,找出数组中大于或者等于左边的数,且小于或等于右边的数。如数组:2,8,12,14,10,19。 则输出:2,8,19。答案:使用一个指针数组,两次循环。主要方法解释比较难,可以画图思路较清晰。其中可以用两个数组来实现,比较容易看懂。但为了节省空间,只使用了一个数组。#include #define max(a,b) a>b?a:b;#define min(a,b) ausing namespace std;void func(int data[],int len){ int *a = n原创 2010-12-04 17:41:00 · 631 阅读 · 0 评论 -
别想太复杂,只要以数学的解法可解
<br />题目:一个组数据从0到N(50000)的N个数字依次递增且不重复,现抽掉其中两个数,并把剩下的49998个数字打乱装入int A[]数组中。请在只遍历一次循环且最多只可用到5个变量,找出这2个抽出的数字。<br /> <br />简单答案:<br /> <br /> <br />long a=0,b=0;<br />for(int i=1;i<=50000;i++)<br />{<br /> a += i;<br /> b += (i*i);<br /> if(i<49998)<br /> {<原创 2010-12-05 10:49:00 · 859 阅读 · 0 评论