![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
dinghua_xuexi
这个作者很懒,什么都没留下…
展开
-
非递归方法求解二叉树最大深度
题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。分析使用递归,很容易写出该求解算法,思路也简单,就是左子树和右子树高度,取两者最大,然后在此基础上加1即可,如下图所示,差不多1到2行代码。 public in...原创 2020-09-30 16:08:27 · 2580 阅读 · 0 评论 -
Manacher算法推演及其问答
public class StringUtils2 { public static String preProcess(String s) { int n = s.length(); if (n == 0) { return "^$"; } String ret = "^"; for (int i = 0; i < n; i++) ret += "#" + s.c.原创 2020-08-25 17:57:50 · 162 阅读 · 0 评论 -
数据结构与算法-数组字符串最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。题解总体思路 以数组第一个字符串为参照,将其从首个字符开始,依次去匹配数组后续的每个字符串对应位置字符,如果每个字符串对应位置字符都匹配,则存下该字符,继续取出第一个...原创 2020-07-16 14:33:42 · 225 阅读 · 0 评论 -
数据结构与算法-寻找数组的中心索引
题目给定一个整数类型的数组nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例1输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 1...原创 2020-07-15 17:09:28 · 177 阅读 · 0 评论 -
单链表-交换相邻节点 & 反转链表
定义单链表class MyLinkedList { static class ListNode{ int val; ListNode next; public ListNode(int val,ListNode next){ this.val = val; this.next = next; } } ListNode head,tail; int size原创 2020-07-14 16:05:13 · 933 阅读 · 0 评论 -
数据结构与算法: 快速排序-python实现
def quick_sort(arr, low, high): pivot_index = partition_arr(arr, low, high) # arr = [2, 15, 8, 28, 90, 33, 14] if low < pivot_index - 1: quick_sort(arr, low, pivot_index - 1) if pivot_index + 1 < high: quick_sort(ar..原创 2020-06-22 17:03:38 · 139 阅读 · 0 评论 -
数据结构与算法: 希尔排序-python实现
# 希尔排序总体框架# 1 依次给定gap值,将数组分割成若干子序列数组,子序列数组相邻元素在原数组中索引值是以gap大小递增的, 这样共有gap个子序列数组# 2 将每一个子序列数组按照插入排序方式排序# 3 不断缩小gap值,每次得到新的gap值时,按步骤1,2再次对数组进行排序# 4 等到gap=1,排完序后,原数组必然有序def shell_sort(arr): assert isinstance(arr, list) arr_length = len(arr) .原创 2020-06-22 17:17:10 · 138 阅读 · 0 评论 -
数据结构与算法-堆排序-python实现
def heap_sort(arr): max_index = len(arr) - 1 # 构建大顶堆,0位置上为最大值 heap_swift(arr, 0, max_index) # end_index 为每次得到最大值后,最大值应该放的位置 for end_index in range(1, max_index + 1).__reversed__(): # 将得到的当前0位置上最大值,交换到它应该放的位置 swap_elem(a...原创 2020-06-22 18:35:03 · 139 阅读 · 0 评论 -
数据结构与算法-python实现任意数字字符串(可含小数)转数字
背景介绍 在上一篇文章里,我们介绍了整数字符串转数字的算法,在本篇文章里,我们更进一步,将任意数字字符串,包括小数,整数形式的字符串转成对应的数值。整数部分我们已经实现了,所以我们着重要解决的是将小数部分的转成对应数值,再结合整数部分,就将一个完整的数字字符串转换成了对应数值小数部分转换思路 在整数部分里,我们得到一个个单字符后,依次将对应位置的字符转换成其对应的数字,然后分别乘以其对应位置的系数(10的次幂), 然后将各部分组合即可。类似地,在处理小数部分时,也是如此,不...原创 2020-07-10 18:26:31 · 2665 阅读 · 0 评论 -
数据结构与算法-python实现整数字符串转数字(不得直接调用现有的库)
二进制 十进制 十六进制 图形 00100000 32 20 (空格)(␠) 00100001 33 21 ! 00100010 34 22 " 00100011 35 23 # 00100100 36 24 $ 00...原创 2020-07-10 17:00:03 · 263 阅读 · 0 评论