美文网首页面试
剑指offer第三天

剑指offer第三天

作者: QJK | 来源:发表于2016-03-31 18:58 被阅读74次

其实是昨天追太阳的后裔和银魂搞得第二天的内容没写完。
最近好虐 国足出线 银魂本季完结 心塞...
不过每天洗完澡照照镜子 又会发觉世界是多么美好

1.png

言归正传

2.4 算法和数据操作

重点掌握 二分查找 归并排序 快速排序
tips 如果题目要求在排序的数组(或部分排序的数组)中查找一个数字或统计某个数字出现的次数,我们都可以尝试二分查找算法

哈希表最主要的优点是能够在O(1)时间查找某一元素。

快速排序 主要思想 在数组中选择一个数字,把数组中小于该数字的移到数组左边,大的移到右边。
快排代码

void qucikSort(int left,int right,int a[]){
int i,j,t,temp;
if (left>right) {
    return;
}
temp=a[left];
i=left;
j=right;
while (i!=j) {
    while (a[j]>=temp && i<j) {
        j--;
    }
    while (a[i]<=temp && i<j) {
        i++;
    }
    if (i<j) {
        t=a[j];
        a[j]=a[i];
        a[i]=t;
    }
}
a[left]=a[i];
a[i]=temp;
qucikSort(left, i-1,a);
qucikSort(i+1, right,a);
}

如果需要排序的数字在一个较小的范围内,可以考虑桶排

2.4.2 递归和循环

如果我们需要重复计算相同的问题,可以选择递归或者循环两种不同的方法。

斐波那契数列 又想起组合数学了 让我哭一会

代码

int Fib(int x){
if (x<=0) {
    return 0;
}
if (x==1 || x==2) {
    return 1;
}
return Fib(x-1)+Fib(x-2);
}

非递归

//真为自己的单词量感到捉急
int FibNotDigui(int x){
  if(x==0) return 0;
  if(x==1) return 0;
  int FibOne=1;
  int FibTwo=0;
  int Fib=0;
  //f(n)=f(n-1)+f(n-2) FibOne:f(n-1)   FibTwo:f(n-2)
  for (int i=2; i<=x; i++) {
    Fib=FibOne+FibTwo;
    FibTwo=FibOne;
    FibOne=Fib;
    }
return Fib;
}

相关变形 一只一次可以跳上一级,也可以跳上两级,求跳n级台阶共有多少种跳法。
n级台阶只有从n-1级和n-2级跳上两种方法,设f(n)为n级台阶的跳法
f(n)=f(n-1)+f(n-2)
识得唔识得 还是一个斐波那契问题 !

位运算

输入一个整数,输出该数二进制中1的个数,如9 1001 输出2
思路 把n和1做运算 得出最低位是否为1 再把1左移一位 和n做与运算 得出次地位是否为1 依此类推
代码如下

void numberofOne(int x){
int count=0;
 unsigned int test=1;
  if (x==1) {
    printf("%d",1);
    return;
  }
while (test<x) {
    if (x & test) {
        count++;
    }
   test= test << 1;
    }
printf("%d",count);
}

先写那么多 今天看的还得整理下
ps:希望保安别那么早赶人 让我把剧看完
pps:今天绝对不能吃宵夜了!

相关文章

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指offer 和 leetcode题目

    剑指offer leetcode

  • 单例模式

    单例模式 最近在看《剑指offer》,根据《剑指offer》的讲解,结合《effectiveJava》简单学习了一...

  • 年龄排序

    摘抄资料:《剑指offer》

  • 剑指offer第三天

    呃 其实是昨天追太阳的后裔和银魂搞得第二天的内容没写完。最近好虐 国足出线 银魂本季完结 心塞...不过每天洗完澡...

  • 剑指offer

    第一题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,...

  • 《剑指offer》

    4.调整数组顺序使奇数位于偶数前面 题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇...

  • 剑指offer

    二维数组中查找数在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到...

  • 剑指offer

    剑指offer题目 1 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。...

  • 剑指offer

    1.链表反转 1、输出倒数第k个数

网友评论

    本文标题:剑指offer第三天

    本文链接:https://www.haomeiwen.com/subject/dcnelttx.html