编程题
Imcy
一只蜗牛
展开
-
编程之美:寻找最大的K个数
解法一: 该解法是大部分能想到的,也是第一想到的方法。假设数据量不大,可以先用快速排序或堆排序,他们的平均时间复杂度为O(N*logN),然后取出前K个,时间复杂度为O(K),总的时间复杂度为O(N*logN)+O(K). 当K=1时,上面的算法的时间复杂度也是O(N*logN),上面的算法是把整个数组都进行了排序,而原题目只要求最大的K个数,并不需要前K个数有限,也不需要后N-K个数原创 2017-12-08 15:47:11 · 367 阅读 · 0 评论 -
编程之美:1的数目
获取N的二进制中1的个数 最简便解法,直接用n与(n-1)进行与操作,直到n=0,程序复杂度只与1的个数有关 void getBinOneNum(int n) { /*获取n二进制中1的个数*/ int count = 0; while (n) { n &= (n - 1); count++; } c...原创 2017-11-17 10:04:38 · 227 阅读 · 0 评论