- 博客(7)
- 收藏
- 关注
原创 python实现归并排序
归并排序def mergeSort(nums, start, end): if start >= end: return mid = (start + end) // 2 mergeSort(nums, start, mid) # 拆分 mergeSort(nums, mid+1, end) merge(nums, start, mid, end) # 合并 return numsdef merge(nums, start,
2020-09-17 16:18:28
97
原创 python实现快排序
快排序def QuickSort(nums, low, high): if low >= high: return pos = FindPos(nums, low, high) QuickSort(nums, low, pos-1) QuickSort(nums, pos+1, high) return numsdef FindPos(nums, low, high): val = nums[low] while l
2020-09-17 10:46:02
107
原创 刷题——剑指Offer 32.之字形打印二叉树
题目请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。题目链接:之字形打印二叉树例: 3 / \ 9 20 / \ 15 7输出: [[3], [20,9], [15,7] ]思路此题目是剑指Offer中的“从上到下打印二叉树”的变种题,原题目中只需按照层次遍历的形式打印即可,其中..
2020-09-07 22:44:44
110
原创 刷题——剑指Offer 10. 青蛙跳台阶
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。题目链接:青蛙跳台阶思路这是一道比较经典的算法题,并且有多个变种题,比如一次可以跳n个台阶,或者上次做的字节跳动的笔试题,在该题上加了一个限制:不能连续跳两次台阶。这道题主要的解法也有两种,一个是递归,一个是动态规划,个人感觉这道题可以算是动态规划思想的入门题,能很好地理解动态规划的.
2020-09-07 16:36:27
166
原创 刷题——剑指Offer 48.最长不含重复字符的子字符串
题干请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。题目链接:剑指 Offer 48. 最长不含重复字符的子字符串例:输入 "abcabcbb" 输出 3 输入 "bbbbb" 输出 1思路1.暴力滑动窗口此方法是我看了滑动窗口的描述后自己写的,没参考别人的设计但是时间消耗不忍直视。我在我的解法中设计了一个辅助空串helper和用于记录最大长度的n,之后将原字符串s遍历并判断:对于s中的每一个字符_...
2020-09-06 19:14:11
135
原创 刷题——剑指Offer 64.求1+2+…+n
题干求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路1.递归 (会使用if判断)博主太菜了,之前从没刷过算法题,现在写个简单的递归都费劲,看了别人的设计才自己写出来。看到这道题第一个想到的方法就是递归,虽然破坏了题干中的限制,但是想到了这个方法就记录一下吧。class Solution(object): def sumNums(self, n): if n == 1..
2020-09-06 18:25:17
85
原创 python实现直接插入排序
python实现直接插入排序class Solution: def InsertOrder(self, nums): nums.insert(0,0) # 使0索引位置为“哨兵” p = 0 # 存放需要插入元素的位置 for i in range(2, len(nums)): if nums[i] < nums[i-1]: nums[0] = nums[i]
2020-08-31 16:06:03
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人