写点什么

论如何快速吃透算法?186 道高阶算法题 + 学习资料程序员面试必备

  • 2021 年 11 月 12 日
  • 本文字数:1292 字

    阅读完需:约 4 分钟

  1. 输入两个正整数 m 和 n,求其最大公约数和最小公倍数

  2. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数

  3. 求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加有键盘控制

  4. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程 找出 1000 以内的所有完数

  5. 一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,共经过多少米?第 10 次反弹多高

  6. 给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字

  7. 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。



刷题能理解算法题答案的由来,但是真正面试考的是你是否真正搞懂了算法,搞懂算法其实真不算难。多看资料多刷题,一切都不是问题。小编整理了一份关于算法的秘笈,需要的朋友关注转发并私信我(算法)即可获得免费下载方式


高阶算法类型


======


二分算法


又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。



冒泡排序算法


比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。这样对数组的第 0 个数据到?N-1 个数据进行一次遍历后,最大的一个数据就“”到数组第 N-1 个位置。N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。



归并排序算法


归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序的序列合并为整体有序序列。



桶排序算法


桶排序的基本思想是: 把数组 arr 划分为 n 个大小相同的区间(桶),每个子区间各自排序,最后合并 。计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。


  1. 1.找出待排序数组中的最大值 max、最小值 min

  2. 2.我们使用 动态数组 ArrayList 作为桶,桶里放的元素也用 ArrayList 存储。桶的数量为(maxmin)/arr.length+1

  3. 3.遍历数组 arr,计算每个元素 arr[i] 放的桶



基数排序算法


将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。


![宅家三个月吃透算法笔记,面试


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


字节,面试官朝我比了个“ok”](https://static001.geekbang.org/infoq/ac/ac8bda5592e4a332828ded9ca06c8548.png)


剪枝算法


在搜索算法中优化中,剪枝,就是通过某种判断,避免一些不必要的遍历过程,形象的说,就是剪去了搜索树中的某些“枝条”,故称剪枝。应用剪枝优化的核心问题是设计剪枝判断方法,即确定哪些枝条应当舍弃,哪些枝条应当保留的方法。



另外 PDF 还包含了


玩转算法必备基础


========


算法的设计基础



算法设计的常用思想



三个水桶等分八升水问题



评论

发布
暂无评论
论如何快速吃透算法?186道高阶算法题+学习资料程序员面试必备