Leetcode与算法
常见算法和leetcode
zhangjin1120
这个作者很懒,什么都没留下…
展开
-
leetcode108.把升序数组转换成二叉搜索树
解题的核心原理是:二叉搜索树的中序遍历结果是一个升序数组,所以根节点的数值,也位于数组的中部。原创 2024-08-19 00:12:21 · 219 阅读 · 1 评论 -
Leetcode112. 查找二叉树中是否存在匹配的路径
递归方式,代码最简洁。原创 2024-07-31 11:09:02 · 269 阅读 · 0 评论 -
Leetcode141.判断单链表中是否存在环
思路:遍历整个单链表,把所有节点放到HashSet中,如果有重复项,则说明有环。的做法,这个做法不容易想到,就不写了。原创 2024-07-27 15:42:42 · 157 阅读 · 0 评论 -
Leetcode700.二叉搜索树中搜索具体值
根据二叉搜索树的定义,如果目标值比节点值大,则搜索右子树,如果目标值比节点值小,则搜索左子树。二叉树不一定是平衡树。原创 2024-07-24 10:36:02 · 393 阅读 · 0 评论 -
推荐一个在线格式化java代码的网站
https://www.toolhelper.cn/Format/java可以选择其他语言:原创 2024-07-24 08:54:13 · 254 阅读 · 0 评论 -
Leetcode617. 两个二叉树相加
非常相似,核心还是递归。原创 2024-07-17 23:10:50 · 264 阅读 · 0 评论 -
Leetcode226.翻转二叉树
【代码】Leetcode226.翻转二叉树。原创 2024-07-17 08:53:04 · 195 阅读 · 0 评论 -
Leetcode83. 删除排序链表中的重复元素
【代码】Leetcode83. 删除排序链表中的重复元素。原创 2024-07-11 12:30:38 · 126 阅读 · 0 评论 -
Leetcode234.判断是否是回文单链表
思路,把单链表转化为ArrayList,然后比较前后两个数是否相等。原创 2024-07-10 19:37:29 · 214 阅读 · 0 评论 -
Leetcode104.求二叉树的最大深度
【代码】Leetcode104.求二叉树的最大深度。原创 2024-07-10 11:26:09 · 348 阅读 · 0 评论 -
Leetcode100.判断两颗二叉树是否相同
【代码】Leetcode100.判断两颗二叉树是否相同。原创 2024-07-10 07:46:30 · 161 阅读 · 0 评论 -
leetcode中的数组是怎么转成二叉树的?
数字2的左子树的下标应该是5,但是很明显,给出的数组总共才4个元素。这个示例在多道题目中,重复出现。在Leetcode中,经常有数组表示的二叉树。但是leetcode中的表示方法,并不符合上面的规律。现在的关键问题是,怎么通过Integer数组。上代码,每行的注释写的很清楚了。得到上图所示的二叉树了?数字2的下标是2,按照。原创 2024-07-10 01:55:48 · 210 阅读 · 0 评论 -
Leetcode101 判断二叉树是否对称
【代码】Leetcode101 判断二叉树是否对称。原创 2024-07-09 21:16:16 · 177 阅读 · 0 评论 -
单链表反转
递归反转 public static ListNode reverseByRecursion(ListNode head) { if (head == null || head.next == null) { return head; } ListNode reHead = reverseByRecursion(head.next); head.next.next = head; head.nex原创 2021-11-14 20:45:31 · 208 阅读 · 0 评论 -
leetcode刷题记录java版
题目描述我的方法:先用正则表达式,把多个空格转为一个空格,再去除首尾空格,然后根据空格拆分,直接拿最后一个单词的长度。//先将多个空格转为一个空格//去掉首位的空格官方的做法:反向遍历找到第一个不是空格的字符,假设下标为A,再继续读取,读到下一个空格的下标,假设为B,然后用A-B。index--;原创 2022-03-11 12:53:26 · 215 阅读 · 0 评论 -
二分查找法java实现
public int search(int[] nums, int target) { int low = 0; int high = nums.length - 1; while (low <= high) { int mid = (low + high)/2; if (nums[mid] == target) { return mid; }...原创 2021-11-21 18:22:23 · 181 阅读 · 0 评论 -
十大经典排序算法
排序算法平均时间复杂度最好情况最坏情况空间复杂度排序方式稳定性冒泡排序O(n^2)O(n)O(n^2)O(1)In-place稳定选择排序O(n^2)O(n^2)O(n^2)O(1)In-place不稳定插入排序O(n^2)O(n)O(n^2)O(1)In-place稳定希尔排序O(n log(n))O(n logn^2)O(n log n^2)O(1)In-place不稳定归并排序O(n log n)...原创 2021-07-29 15:44:58 · 103 阅读 · 0 评论 -
十大排序算法梳理
十大排序算法的时间复杂度图解十大排序算法堆排序原创 2022-03-02 01:34:47 · 581 阅读 · 0 评论 -
排序算法-堆排序
堆排序的基本思路是什么?将待排序序列构造成一个大顶堆(任意节点都大于它的所有孩子),此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。堆排序具体是怎么回事?如下图:再看下面这个动图,就明白多了。如何用数组表示一个堆?从上图可以看出,堆是一颗完全二叉树,对于任意一个父节点的序号n来说(这里n从0算),它的子节点的序号一定是2n+1,2n+2,所以对于上图原创 2022-03-02 01:29:55 · 1611 阅读 · 4 评论 -
排序算法:快速排序java实现
能不能简单讲讲快速排序到底是怎么回事?不多BB,上图:上图中,6左侧的部分,难道单独新建一个数组,再把数值一个一个复制过去吗?不是,采用递归,还是同一个数组,只是开始和结束的index发生了变化。看下面的源码就明白了。用java代码如何实现?public class QuickSort { public static void quickSort(int[] arr,int low,int high){ int i,j,temp,t; if(low>原创 2022-03-18 13:25:25 · 81 阅读 · 0 评论 -
美图秀秀笔试题:妖怪与和尚过河问题答案
有三个和尚和三个妖怪过河,只有一条能装下 两个和尚或着两个妖怪,或者一个和尚一个妖怪的小船,在河的任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉的危险。必须要有和尚或者妖怪把船开到对岸,返回时也必须要有一个和尚或者妖怪,把船划回来。你能不能找出一种安全的渡河方法呢?这是一个很有意思的智力题,但是并不难,每次可以选择一个人或者两个人过河,只要保证在河的任何一...原创 2018-12-23 16:20:56 · 1175 阅读 · 0 评论