前言

霸哥依稀记得,第一次接触算法是在高中的时候,用尺子规范的在作业本上画流程图,不同的形状对应不同的流程,什么椭圆开始与结束,还有各种代表条件、判断的四边形图。

而且,霸哥现在编程的时候依旧有这样的习惯,在某个业务块需要用到某些算法的时候,我都会先在纸上画出完整的流程图,把所有的可能性标出来,然后进行步骤缩减,给出最优解。

建议一些写代码写得比较复杂的朋友可以先试试这样的方式,尤其是在有算法需求的代码上。

算法的重要性

有些朋友认为编程最重要的运用工具,运用框架,多掌握一些技术点,这些确实是成为大家职业瓶颈的重要因素。但是,真正决定你能否成为大神的是——算法。

跟学生时代一样,那些数学成绩好的人,往往就是同学眼里的学霸。

算法通常需要程序员有较强的逻辑思维能力,所以你会发现,很多大神写出的代码都是非常工整且简洁的。

程序员小陈就很不巧遇到一件跟算法有关的事情,公司突然组织考察算法,结果10道题8道答错。被老板叫到办公室,进行了长达三个小时的深度聊天。第二天,程序员小陈就主动离职了,一直在家刷算法题,据说是从高中数学开始看起的。

这里来两个腾讯的算法题吧:

1、小 Q 定义了一种数列称为翻转数列:

给定整数 n 和 m, 满足 n 能被 2m 整除。对于一串连续递增整数数列1, 2, 3, 4...,每隔 m 个符号翻转一次,最初符号为'-';。

例如n=8,m=2,数列就是:-1, -2, +3, +4, -5, -6, +7, +8。

而n=4,m=1,数列就是:-1, +2, -3, + 4。

小Q现在希望你能帮他算算 n 项和为多少。

解析:

输入描述:

输入包括两个整数 n 和 m(2 <= n <= 109, 1 <= m), 并且满足 n 能被 2m 整除。

输出描述:

输出一个整数, 表示前 n 项和。

输入例子 1:

8 2

输出例子 1:

8

答案:

解题思路:一个数列共有 n/2m 组,每一组的和为 m^2 所以,前 n 项和为:(n/2m)*(m^2)=m*n/2

using namespace std;
typedef long long LL;
int main()
{ LL n, m; cin >> n >> m; cout<<n*m/2<<endl;
}

2、牛牛和羊羊正在玩一个纸牌游戏。这个游戏一共有 n 张纸牌, 第 i 张纸牌上写着数字 ai。

牛牛和羊羊轮流抽牌,牛牛先抽,每次抽牌他们可以从纸牌堆中任意选择一张抽出,直到纸牌被抽完。

他们的得分等于他们抽到的纸牌数字总和。

现在假设牛牛和羊羊都采用最优策略,请你计算出游戏结束后牛牛得分减去羊羊得分等于多少。

解析:

输入描述:

输入包括两行。

第一行包括一个正整数 n(1 <= n <= 105),表示纸牌的数量。

第二行包括 n 个正整数 ai(1 <= ai <= 109),表示每张纸牌上的数字。

输出描述:

输出一个整数,表示游戏结束后牛牛得分减去羊羊得分等于多少。

输入:

3 2 7 4

输出:

5

答案:

# coding=utf-8
while 1: num=int(raw_input()) l=sorted(map(int,raw_input().split())) tar=num%2 sumA=0 sumB=0fori inrange(num): ifi%2==tar:sumA+=l[i] elifi%2!=tar: sumB+=l[i] printabs(sumA-sumB)
break

算法

二分查找

冒泡排序算法

插入排序算法

快速排序算法

希尔排序算法

归并排序算法

桶排序算法

基数排序算法

剪枝算法

回溯算法

最短路径算法

最大数组算法

最长公共子序算法

最小生成树算法

以上资料:算法学习内容、算法与数据结构脑图、面试题含答案,我都已经打包好了,转发文章后,关注公众号【阿虎讲Java】 扣资料免费获取!

“算法考核没过,老板找我聊了3个小时”:离职程序员重刷数学题相关推荐

  1. 外包3年,吃透这三份Java程序员必刷的算法宝典后,已从13K涨到25K

    懂点算法,很有必要 "不学数据结构和算法,一辈子都是码畜".不管你是 Java 程序员.算法工程师.数据分析师,还是技术管理者.架构师...... 我们都有一个共同的目标,就是在技 ...

  2. 27岁没文凭,想努力自学编程,有机会成为程序员吗?

    之前在某乎看了很多类似的回答,说实话,我只想用一张图来表达. 感觉个个都是清华北大的高材生,说的无学历就只能被社会抛弃,连选择的权利都没有一样. 高学历的确就像玩游戏拿了红蓝BUFF,可以肆无忌惮游走 ...

  3. 程序员找工作黑名单:除了 996.ICU,程序员还将如何自救?

    当一个群体真正联合起来,有些事可能就要闹大了-- 作者 | 仲培艺 出品 | 程序人生(ID:coder_life) 996.ICU 的辐射范围还在持续扩散的档口,又一个程序员群体"反抗&q ...

  4. 用算法撩妹都不会,别跟我说你是程序员

    程序员头条(ID:CoderTop) 猿妹 编译 原文:https://medium.com/@howal/mathematically-find-out-if-a-girl-is-intereste ...

  5. 代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐

    来源:网络 1.三思后再写代码!!! 2.从世界上搜索喜欢你的人!!! 3.代码没写完,哪里有脸睡觉!!! 4.程序员的 Home 键!!! 5.编程是一门艺术!!! 6.云 ~~~~ 雨!!! 7. ...

  6. 找不到对象怎么办,十年程序员带你了解java对象的创建

    java对象创建过程如图所示: 类检查器 虚拟机遇到一条new指令的时候,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个行号引用代码的类是否被加载过. 解析过.初始化过 ...

  7. 【算法】剑指 Offer 56 - II. 数组中数字出现的次数 II 【重刷】

    1.概述 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次.请找出那个只出现一次的数字. 示例 1: 输入:nums = [3,4,3,3] 输出:4 示例 2: 输入:nums ...

  8. 使用jieba分析小说太古神王中,男主更爱谁?去文章中找答案吧!#华为云·寻找黑马程序员#

    特大好消息 周三晚上,我媳妇儿就要带着俩小爷去重庆姐姐家玩了,我又可以一个人开心的学习.玩耍了,想着都开心到失眠啊-失眠怎么办?写公众号啊,哈哈. 文本分析 很多时候,我们会去统计一片文章中的高频词汇 ...

  9. catboost和xgboost_算法竞赛开挂神器:XGBoost、LightGBM和Catboost一决高低 | 程序员硬核算法评测...

    [导读]XGBoost.LightGBM 和 Catboost 是三个基于 GBDT(Gradient Boosting Decision Tree)代表性的算法实现,今天,我们将在三轮 Battle ...

最新文章

  1. PackageManagerService详解
  2. VBRK-RFBSK - 会計への転記ステータス
  3. 新的信息论诞生前的若干问题分析
  4. hdoj 2041 超级阶梯
  5. 3.4.3 深度探索linux,3.2.4 vmlinux.bin的构建过程(3)
  6. php restful 认证,Yii2.0 RESTful API 认证教程
  7. [原创]ASP.net 2.0 ObjectDataSource 应用操作代码实例(1)-—访问SQL2005
  8. 工业大数据发展面临四方面挑战
  9. 【bzoj1668/Usaco2006 Oct】Cow Pie Treasures 馅饼里的财富——dp
  10. BIM平台 http://gzcd.bim001.cn
  11. iPhone模拟器截图
  12. [渝粤教育] 西南科技大学 民事诉讼法学 在线考试复习资料(1)
  13. Centos7设置开机自动运行脚本
  14. 高德地图开发 —— 获取高德地图开发的 key
  15. 开发者如何了解技术前沿? 再也不用看微信公众号的软文了!
  16. IT售前如何写解决方案分析
  17. DSC和HD医学图像分割评价指标
  18. Leetcode 971 C++代码
  19. motrix高速下载百度网盘资源的方法
  20. 加载google Z-Xing库实现二维码解析与生成,并将解析结果在另一页面显示

热门文章

  1. android 动态向Gallery中添加图片及倒影3D效果
  2. C#实现登陆和注册(不连接数据库)ArrayList(窗体)
  3. 如何用python批量删除excel电子表格具有规律的部分内容
  4. 废旧纸箱做机器人图片_近百斤硬纸板造出三米高“机器人”(图)
  5. linux三剑客之awk命令详解
  6. 浅析数据采集工具Flume
  7. 工作中遇到的问题与处理
  8. JSP花卉市场管理系统
  9. Android介绍及视频教程
  10. 全面剖析Windows磁盘扫描功能(转)