算法入门推荐:《算法图解》

本文推荐《算法图解》作为算法入门书籍,适合非科班出身者。书中用Python解释基础算法,如二分查找、排序算法、散列表、广度优先搜索和动态规划。文中结合实际校招题目,通过实例讲解算法应用,如绳子切割问题,展示如何使用二分查找和动态规划解决。同时,文章提供C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法入门推荐:《算法图解》

介绍一本关于算法基础的入门级书籍,对于非科班出身的人来说,算法和数据结构的补充还是很有必要的,但是这些东西往往又是很枯燥以致于打消了很多人的积极性,《算法图解》用python为编程语言,对于一些基础性的算法介绍可以说很通俗易懂了,真的很适合入门,同时这篇文章我也结合了一些校招题目来进行一定程度的扩充,有一些用到了C++。

一、二分查找(O(log n))

def binary_search(list,item):
	low = 0;
	high = len(list)-1
	while low <= high :
		mid = int((low+high)/2)
		guess =list[mid]
		if guess == item:
			return mid
		if guess < item:
			low = mid+1
		else:
			high=mid-1
	return None
my_list =[1,3,5,7,9]
print (binary_search(my_list,5))
print (binary_search(my_list,-1))

输出结果:

2
None

二分查找的考查有很多,例如有一年字节跳动的编程题就是用到了这个方法:

问题描述:

总共有n条长度不等的绳子,可以任意切割,不能拼接,要求切割后得到m条长度相等的绳子,求问得到的这些长度相等的绳子的长度最大值L。

输入: 绳子的条数n;n条绳子的长度;要求切成的绳子数量m
输出:切割成相同长度的m条绳子的最大的长度

思路解析:

这道题其实就是二分查找的题目,区别于动态规划(在接下来的那个板块我会讲到也是割绳子的另一道题),因为我们知道最长长度的绳子,可以确定最终将剪成的长度只能在0到这个数中间,我们对这个范围进行二分查找,然后对得到的guess值,我们构造一个函数来判断是否符合要求,这个函数就是遍历所有绳子算出能剪出多少段这样长度的绳子,这个数量大于m则说明短了,这个数量小于m则说明长了,这样的二分查找还是挺清晰的。

N = input()
N=int (N)
max_len = 0.0
min_len = 0.0
num={
   
   }
for i in range
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值