![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法编程
data大柳
在大数据的海洋,一条大汉在裸泳,游得飞快(∩_∩)
展开
-
算法编程5:判断一个单链表是否有环
分析:使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出class Solution: def hasCycle(self , head ): # write code here if not head: return False node = head while node: noden =原创 2021-03-11 14:21:17 · 269 阅读 · 0 评论 -
算法编程12:单调递增的数字
描述给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)示例示例 1————————————————————输入: N = 10输出: 9————————————————————示例 2————————————————————输入: N = 1234输出: 1234————————————————————示例 3—————原创 2021-03-11 15:09:36 · 631 阅读 · 0 评论 -
算法编程11:二分法求平方根
描述计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例示例 1——————————————————————————————————输入: 4输出: 2——————————————————————————————————示例 2——————————————————————————————————输入: 8输出: 2——————————————————————————————————说明: 8 的平方根是 2.82842…原创 2021-03-11 15:04:43 · 1617 阅读 · 0 评论 -
算法编程10:岛屿的最大面积
描述给定一个包含了一些 0 和1的非空二维数组grid,一个岛屿是由四个方向 (水平或垂直) 的1(代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,原创 2021-03-11 14:55:18 · 471 阅读 · 0 评论 -
算法编程9:求1到100的和
编程实现(用循环)def sum_xh(num): sum = 0 for i in range(1,num+1): sum += i return sumprint(sum_xh(100))编程实现(用递归)def sum_dg(num): if num == 1: return 1 else: return num + sum_dg(num-1)print(sum_dg(100))...原创 2021-03-11 14:51:30 · 1424 阅读 · 0 评论 -
算法编程8:求前 n 项的斐波那契数列
描述求前 n 项的斐波那契数列(用递归函数)编程实现def fun(n): if n <= 1: return n else: return fun(n - 1) + fun(n - 2)for i in range(10): print(fun(i))原创 2021-03-11 14:49:23 · 900 阅读 · 0 评论 -
算法编程7:一个四位数 abcd,满足 abcd * 4 = dcba,求这个数
描述一个四位数 abcd,满足 abcd * 4 = dcba,求这个数编程实现1for i in list(range(1000,2500)): num2 = i*4 a = i //1000 b = i % 1000//100 c = i % 1000%100//10 d = i % 10 e = num2 //1000 f = num2 % 1000//100 g = num2 % 1000%100//10 h = n原创 2021-03-11 14:46:02 · 2481 阅读 · 0 评论 -
算法编程6:连续子数组的最大和
问题描述输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例————————————————————————————————输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6————————————————————————————————解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路典型的动态规划问题状态方程:max( dp[ i ] ) = getMax( max( dp[ i原创 2021-03-11 14:40:48 · 244 阅读 · 0 评论 -
算法编程4:打印九九乘法表
代码实现#!/usr/bin/python3#外边一层循环控制行数#i是行数i=1while i<=9: #里面一层循环控制每一行中的列数 j=1 while j<=i: mut =j*i print("%d*%d=%d"%(j,i,mut), end=" ") #print("{}*{}={}".format(j,i,mut),end = " ") j+=1 print("")原创 2021-03-11 13:47:27 · 542 阅读 · 0 评论 -
算法编程3:冒泡排序
冒泡排序介绍冒泡排序(Bubble Sort),是一种计算机科学领域的较简单基础的排序算法。其基本思路是,对于一组要排序的元素列,从数组中的第0个元素开始,与后面一个元素进行比较,如果前面的元素大于后面的元素,就调换位置(即:a0与a1比较得到结果后,a1与a2比较…),如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面,这样最大的元素就被换到数组最末尾,剔除掉最后一个元素,在余下的数组元素中进行上述操作,到最后,整个数组呈现从小到大的排序。这个算法的名字由来是因为越大的元素会经由交换慢慢“原创 2021-03-11 11:36:56 · 520 阅读 · 0 评论 -
算法编程2:快速排序
快速排序的基本思想任取待排序序列的一个元素作为中心元素(可以用第一个,最后一个,也可以是中间任何一个),习惯将其称为pivot,枢轴元素,然后将所有比枢轴元素小的放在其左边,将所有比它大的放在其右边,这样就形成左右两个子表,然后对左右两个子表再按照前面的算法进行排序,直到每个子表的元素只剩下一个。可见快速排序用到了分而治之的思想。将一个数组分成两个数组的方法为:先从数组右边找到一个比枢轴元素小的元素,将数组的第一个位置赋值为该元素;再从数组的左边找到一个比枢轴元素大的元素,将从上面取元素的位置赋值原创 2021-03-11 11:09:35 · 210 阅读 · 0 评论 -
算法编程1:字符串翻转
字符串翻转比如 ‘I like python’,翻转成 ‘python like I’#!/usr/bin/env python3# -*- coding: utf-8 -*-def printTable(table_test): ''' 字符串翻转 ''' inputwords = table_test.split(" ") inputwords = inputwords[::-1] outputwords = " ".join(inputwords原创 2021-03-11 11:02:25 · 173 阅读 · 0 评论