题目:输入一个整数数组.实现一个函数来调整该数组中数字的顺序.使得全部奇数位于数组的前半部分.全部偶数位于数组的后半部分. 1.基本实现: 假设不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的全部的数字往前面挪动一位. 挪完之后在数组的末尾有一个空位.这时把该偶数放入这个空位. 因为没碰到一个偶数就须要移动O(n)个数字.因此总的时间复杂度是O(n2).可是,这样的方法不能让面试官惬意.只是假设我们在听到题目之后立就可以以说出这个解法,…
题目链接地址: http://ac.jobdu.com/problem.php?pid=1371 题目1371:最小的K个数 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5938解决:1265 题目描写叙述: 输入n个整数,找出当中最小的K个数.比如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每一个測试案例包括2行: 第一行为2个整数n.k(1<=n.k<=200000),表示数组的长度. 第二行包括n个整数.表示这n个数.数组中的数的范…
leetcode上也见过一样的题,当时不会做 看了一下解法是纯数学解法就没看,结果剑指offer上也出现了这道题,那还是认真看下吧 对于数字abcde,如果第一位是1,比如12345,即计算f(12345). 那么首位为1对结果的增益一共是10000到12345一共2346个. 另外首位为1的数字,后四位还可能有1出现,这部分即0001到2345(对应的数字就是10001到12345),也递归解决 f(2345). 还有10000以下的数字(即4位数),这部分交给递归解决f(9999). 如果第…
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 需要与面试官确认的是,这个二维数组的元素是否存在重复情况,如何处理重复情况. 解题思路: 1.判断待查找整数与矩阵的左上角的最小元素以及右下角的最大元素,如果没在他们之间则直接返回没有找到. 2.选取数组中右上角的数字,如果该数字等于要查找的数字,则查找过程结束; 3.如果该数字大于要查找的数字,则剔除这个数字所在的列;…
题目:请实现一个函数,输入一个整数.输出该数二进制表示中1的个数. 比如把9表示成二进制是1001,有2位是1.因此假设输入9.该函数输出2. 1.可能引起死循环的解法 这是一道非常主要的考察二进制和位运算的面试题. 题目不是非常难.面试官提出问题之后,我们非常快形成一个主要的思路:先推断证书二进制表示中最右边一位是不是1.接着把输入的证书右移一位,此时原来处于从右边树起的第二位被移到最后一位,再推断是不是1.这样没移动一位,知道整个整数变成0为止.如今的问题变成怎么推断一个整数的最右边是不是1…
个人答案: #include"iostream" #include"stdio.h" #include"string.h" using namespace std; typedef long long ll; ; ll fib[MAXN]; ll Fibonacci(int n) { ) return fib[n]; )+Fibonacci(n-); } int main() { int n; memset(fib,-,sizeof(fib));…
注:java主要可以利用字符串的length方法求出长度解决这个问题带来方便 public class FindNum { public static void main(String[] args) { int arry[][] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; int findnum = 12; if(find(arry,findnum)){ System.out.println("find&qu…
本题使用归并排序的思想,结合归并排序,写出的算法解. //数组中的逆序对 public static int InversePairs(int[] array){ if(array==null||array.length<=1) return 0; int[] copy = new int[array.length]; //复制原数组 copy = Arrays.copyOf(array, array.length); return mergeCount(array, copy, 0, arra…
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 编程思想 因为n级台阶,第一步有n种跳法:跳1级.跳2级.到跳n级跳1级,剩下n-1级,则剩下跳法是f(n-1)跳2级,剩下n-2级,则剩下跳法是f(n-2)所以f(n)=f(n-1)+f(n-2)+...+f(1)因为f(n-1)=f(n-2)+f(n-3)+...+f(1)所以f(n)=2*f(n-1)=2^(n-1) 编程实现 class Solution { publ…