06 2013 档案

异形数
摘要:在一个长度为n的整形数组a里,除了三个数字只出现一次外,其他的数字都出现了2次。请写程序输出任意一个只出现一次的数字,程序时间和空间复杂度越小越好。例如: a = {1,3,7,9,5,9,4,3,6,1,7},输出4或5或6C/C++:理解: 在这里找出出现一次的数是根据flips=lowbit(a^b)^lowbit(a^c)^lowbit(b^c),这是为什么呢,我们可以用图形化的方式来理解这个问题。// lowbit表示的是某个数从右往左扫描第一次出现1的位置int lowbit(int x){ return x&~(x-1);}void find(int* a , int n 阅读全文

posted @ 2013-06-20 10:25 dyc0113 阅读(502) 评论(0) 推荐(0) 编辑

求数组当中子数组最大和
摘要:/* 求最大子数组和(编程之美2.14) **author: DongChong **date :2013.6.12 最简单的方法是采用编程珠玑上的扫描算法,但是别忘了判断 数组当中都是负数的情况了。*/#include <iostream>using namespace std;int main(){ int a[]={-1,-2,-3,-10,-4,-7,-2,-5}; int i=0; int sum=0; int max=0; int start=0; int maxStart=0,maxEnd=0; for(i=0;i<sizeof(a)/... 阅读全文

posted @ 2013-06-12 17:11 dyc0113 阅读(120) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示