网站首页 > java教程 正文
前言
霸哥依稀记得,第一次接触算法是在高中的时候,用尺子规范的在作业本上画流程图,不同的形状对应不同的流程,什么椭圆开始与结束,还有各种代表条件、判断的四边形图。
而且,霸哥现在编程的时候依旧有这样的习惯,在某个业务块需要用到某些算法的时候,我都会先在纸上画出完整的流程图,把所有的可能性标出来,然后进行步骤缩减,给出最优解。
建议一些写代码写得比较复杂的朋友可以先试试这样的方式,尤其是在有算法需求的代码上。
算法的重要性
有些朋友认为编程最重要的运用工具,运用框架,多掌握一些技术点,这些确实是成为大家职业瓶颈的重要因素。但是,真正决定你能否成为大神的是——算法。
跟学生时代一样,那些数学成绩好的人,往往就是同学眼里的学霸。
算法通常需要程序员有较强的逻辑思维能力,所以你会发现,很多大神写出的代码都是非常工整且简洁的。
程序员小陈就很不巧遇到一件跟算法有关的事情,公司突然组织考察算法,结果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=0
fori inrange(num):
ifi%2==tar:
sumA+=l[i]
elifi%2!=tar:
sumB+=l[i]
printabs(sumA-sumB)
break
算法
二分查找
冒泡排序算法
插入排序算法
快速排序算法
希尔排序算法
归并排序算法
桶排序算法
基数排序算法
剪枝算法
回溯算法
最短路径算法
最大子数组算法
最长公共子序算法
最小生成树算法
以上资料:算法学习内容、算法与数据结构脑图、面试题含答案,我都已经打包好了,转发文章后,私信【算法】免费获取!
- 上一篇: List 去除重复数据的五种方式,舒服
- 下一篇: Netty 断开重连
猜你喜欢
- 2025-01-02 Netty 断开重连
- 2025-01-02 List 去除重复数据的五种方式,舒服
- 2025-01-02 你真的会用MySQL去重吗?看看DISTINCT和GROUP BY的奥秘
- 2025-01-02 Java8两个List集合取交集、并集、差集、去重并集
- 2025-01-02 干货实战~Java如何防止接口重复提交
- 2025-01-02 面试突击63:MySQL 中如何去重?
- 2025-01-02 Java中List集合对象去重及按属性去重的8种方法
- 2025-01-02 Java实现10万+并发去重,持续优化
- 2025-01-02 java接口防重提交如何处理
- 2025-01-02 Java实现 10 万+并发去重,持续优化
你 发表评论:
欢迎- 04-24Java Collections 工具类集合框架中常用算法解析
- 04-24桶排序的简单理解
- 04-24Java集合框架底层实现原理大揭秘
- 04-24Java 集合框架全面解析:选对数据结构,提升开发效率
- 04-24c#集合排序
- 04-24Java面试中常被问到的集合类深度解读
- 04-24VBA技术资料MF278:对集合进行排序
- 04-24Spring 最常用的 7 大类注解,史上最强整理
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)