Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

仓库题解进度:剑指offer(14)、二叉树(12)、二分查找(3)、线性查找(1)、数组(2)、链表(1)、搜索算法(1)、动态规划(4)、位运算(1) 等等。update...... 如果对你有帮助,请在右上角 star 一下,感谢

License

NotificationsYou must be signed in to change notification settings

xiefeiyangshang/Leetcode-Solutions-with-Java-And-Kotlin

 
 

Repository files navigation

仓库每周 持续更新,如果对你有帮助,请在右上角 star 一下

做题进度:AC 88 题,每道题目都会用 Java 和 kotlin 去实现

每题都有解题思路、时间复杂度、空间复杂度、源代码,源代码在 00-code(源代码) 目录下

仓库题解进度:剑指offer(15)、二叉树(12)、二分查找(3)、线性查找(1)、数组(2)、链表(1)、搜索算法(4)、动态规划(4)、位运算(2)、字符串(2)

kotlin-vs-java-leetcode

数据结构和算法是每个程序的都必须掌握的,也是面试的入门门槛之一,在大学期间经常参加一些比赛如蓝桥杯、ACM 等等,因此无论在面试还是工作都带来很多帮助。

Google 这几年一直在强力推荐 Kotlin,自从用了 Kotlin 了之后爱不释手,工作效率提高了很多,现在我打算重拾 LeetCode 之 Algorithm,语言选择Java、Kotlin,目前已经 AC 了 70 题左右,题库会一点点去完善。

LeetCode 我现在正式从国际版切换到国内版,因为国内版本现在越做越好了,题库也更加完善,除了基本的算法、数据库、Shell、多线程之外,还有程序员面试宝典、剑指 offer 系列题目,另外不仅可以看全球排名,还可以看国内排名。

LeetCode 的题库庞大,每个分类都能筛选出数百道题,由于每个人的精力有限,不可能刷完所有题目,因此我会按照经典类型题目去分类、和题目的难易程度去排序。

  • 数据结构: 数组、栈、队列、字符串、链表、树……
  • 算法: 查找算法、搜索算法、位运算、排序、数学、……

每道题目都会用 Java 和 kotlin 去实现,并且每道题目都有解题思路、时间复杂度和空间复杂度,如果你同我一样喜欢算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:Leetcode-Solutions-with-Java-And-Kotlin,一起来学习,期待与你一起成长。

剑指 offer(持续更新中)

剑指 offer 涵盖了以上所有分类的题目,是面试必刷题系列之一,笔者正努力刷完所有题目,然后对每题进行分类,希望可以帮助每个求职找工作的同学。

题号题解题目地址LanguageDifficulty
03数组中重复的数字中文地址Java / KotlinEasy
04二维数组中的查找中文地址Java / KotlinEasy
05替换空格中文地址Java / KotlinEasy
06从尾到头打印链表中文地址Java / KotlinEasy
07重建二叉树中文地址Java / KotlinEasy
09用两个栈实现队列中文地址Java / KotlinEasy
10-1斐波那契数列中文地址Java / KotlinEasy
10-2青蛙跳台阶问题中文地址Java / KotlinEasy
11旋转数组的最小数字中文地址Java / KotlinEasy
12矩阵中的路径中文地址Java / KotlinMedium
13机器人的运动范围中文地址Java / KotlinMedium
14-1剪绳子中文地址Java / KotlinMedium
14-2剪绳子中文地址Java / KotlinMedium
15二进制中 1 的个数中文地址Java / KotlinEasy
16数值的整数次方中文地址Java / KotlinMedium
17???中文地址Java / KotlinEasy
18???中文地址Java / KotlinEasy

查找

查找:二分查找、线性查找、树结构查找、散列表查找

二分查找(持续更新中)

二分查找算法基本步骤:

  1. 假定样本数列中的所有元素都是从小到大排列的。
  2. 使用目标元素与样本数列中的中间元素进行大小的比较。
  3. 若目标元素等于中间元素,则表示查找成功。
  4. 若目标元素小于中间元素,则去中间元素的左侧进行查找,重复步骤 2。
  5. 若目标元素大于中间元素,则去中间元素的右侧进行查找,重复步骤 2。
  6. 直到与所有该比较的元素比较完毕依然不相等,则表示查找失败。
题号题解题目地址LanguageDifficulty
367Valid Perfect Square
有效的完全平方数
英文地址 /中文地址Java / KotlinEasy
69Sqrt(x)
X的平方根
英文地址 /中文地址Java / KotlinEasy
744Find Smallest Letter Greater Than Target
寻找比目标字母大的最小字母
英文地址 /中文地址Java / KotlinEasy
11(offer)旋转数组的最小数字中文地址Java / KotlinEasy

线性查找(持续更新中)

从前往后依次对比需要查找的数据,如果找到对应的元素,则返回元素的位置。

  1. 使用目标元素与样本数列中的第一个元素起依次比较大小;
  2. 若找到与目标元素相等的元素,则表示查找成功;
  3. 若目标元素与样本数列的所有元素比较完毕也没有找到相等的元素,则表示查找失败。
题号题解题目地址LanguageDifficulty
04(offer)二维数组中的查找中文地址Java / KotlinEasy

二叉树(持续更新中)

完全二叉树: 若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧密哈~~~

满二叉树: 除最后一层外,每一层上的所有节点都有两个子节点,最后一层都是叶子节点。

哈夫曼树: 给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。

二叉排序树: 又称二叉查找树(Binary Search Tree),亦称二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:

  • 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
  • 左、右子树也分别为二叉排序树;
  • 没有键值相等的节点

二分查找的时间复杂度是O(log(n)),最坏情况下的时间复杂度是O(n)(相当于顺序查找)

平衡二叉树: 又称 AVL 树。平衡二叉树是二叉搜索树的进化版,所谓平衡二叉树指的是,左右两个子树的高度差的绝对值不超过 1。

红黑树: 红黑树是每个节点都带颜色的树,节点颜色或是红色或是黑色,红黑树是一种查找树。红黑树有一个重要的性质,从根节点到叶子节点的最长的路径不多于最短的路径的长度的两倍。对于红黑树,插入,删除,查找的复杂度都是O(log N)。

题号题解题目地址LanguageDifficulty
144Binary Tree Preorder Traversal
二叉树前序遍历
英文地址 /中文地址Java / KotlinMedium
94Binary Tree Inorder Traversal
二叉树中序遍历
英文地址 /中文地址Java / KotlinMedium
145Binary Tree Postorder Traversal
二叉树后序遍历
英文地址 /中文地址Java / KotlinMedium
145Binary Tree Level Order Traversal
二叉树层次遍历
英文地址 /中文地址Java / KotlinMedium
107Binary Tree Level Order Traversal II
自下而上分层遍历
英文地址 /中文地址Java / KotlinEasy
105Construct Binary Tree from Preorder and Inorder Traversal
从前序与中序遍历序列构造二叉树
英文地址 /中文地址Java / KotlinMedium
104Maximum Depth of Binary Tree
计算二叉树的最大深度
英文地址 /中文地址Java / KotlinEasy
111Minimum Depth of Binary Tree
计算二叉树的最小深度
英文地址 /中文地址Java / KotlinEasy
110Balanced Binary Tree
判断二叉树是不是平衡二叉树
英文地址 /中文地址Java / KotlinEasy
222Count Complete Tree Nodes
求二叉树中的节点个数
英文地址 /中文地址Java / KotlinMedium
100same-tree
判断两棵二叉树是否结构相同
英文地址 /中文地址Java / KotlinEasy
07(offer)重建二叉树中文地址Java / KotlinEasy

线性表

线性表:数组、链表、栈、队列等等

数组以及数字(持续更新中)

题号题解题目地址LanguageDifficulty
01拿硬币中文地址Java / KotlinEasy
167Two Sum II - Input array is sorted
两数之和2 - 输入数组有序
英文地址 /中文地址Java / KotlinEasy
10-1(offer)斐波那契数列中文地址Java / KotlinEasy
10-2(offer)青蛙跳台阶问题中文地址Java / KotlinEasy

链表(持续更新中)

链表:单链表、双向链表、循环链表、双向循环链表、静态链表

题号题解题目地址LanguageDifficulty
06(offer)从尾到头打印链表中文地址Java / KotlinEasy
18(offer)???中文地址Java / KotlinEasy

栈(持续更新中)

栈:顺序栈、链式栈

题号题解题目地址LanguageDifficulty
09(offer)用两个栈实现队列中文地址Java / KotlinEasy

搜索(持续更新中)

搜索:深度优先搜索、广度优先搜索

题号题解题目地址LanguageDifficulty
13(offer)机器人的运动范围中文地址Java / KotlinMedium
200岛屿数量中文地址 /英文地址Java / KotlinMedium
279???中文地址 /英文地址Java / KotlinMedium

队列(持续更新中)

队列:普通队列、双端队列、阻塞队列、并发队列、阻塞并发队列

题号题解题目地址LanguageDifficulty

动态规划(持续更新中)

题号题解题目地址LanguageDifficulty
12(offer)矩阵中的路径中文地址Java / KotlinMedium
14-1(offer)剪绳子中文地址Java / KotlinMedium
343整数拆分英文地址 /中文地址Java / KotlinMedium
14-2(offer)剪绳子中文地址Java / KotlinMedium

位运算(持续更新中)

题号题解题目地址LanguageDifficulty
15(offer)二进制中 1 的个数中文地址Java / KotlinEasy
16(offer)数值的整数次方中文地址Java / KotlinMedium
50Pow(x, n)中文地址Java / KotlinMedium

字符串(持续更新中)

题号题解题目地址LanguageDifficulty
14最长公共前缀中文地址 /英文地址Java / KotlinEasy
03无重复字符的最长子串中文地址 /英文地址Java / KotlinMedium

数学(持续更新中)

题号题解题目地址LanguageDifficulty
17???中文地址Java / KotlinEasy

排序(持续更新中)

排序:冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序、堆排序

题号题解题目地址LanguageDifficulty

结语

致力于分享一系列 Android 系统源码、逆向分析、算法、翻译、Jetpack 源码相关的文章,正在努力写出更好的文章,如果这篇文章对你有帮助给个 star,文章中有什么没有写明白的地方,或者有什么更好的建议欢迎留言,欢迎一起来学习,在技术的道路上一起前进。

计划建立一个最全、最新的 AndroidX Jetpack 相关组件的实战项目 以及 相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,可以前去查看:AndroidX-Jetpack-Practice, 如果这个仓库对你有帮助,请帮我点个赞,我会陆续完成更多 Jetpack 新成员的项目实践。

Android10 源码分析

正在写一系列的 Android 10 源码分析的文章,了解系统源码,不仅有助于分析问题,在面试过程中,对我们也是非常有帮助的,如果你同我一样喜欢研究 Android 源码,可以关注我 GitHub 上的Android10-Source-Analysis

算法题库的归纳和总结

由于 LeetCode 的题库庞大,每个分类都能筛选出数百道题,由于每个人的精力有限,不可能刷完所有题目,因此我按照经典类型题目去分类、和题目的难易程度去排序。

  • 数据结构: 数组、栈、队列、字符串、链表、树……
  • 算法: 查找算法、搜索算法、位运算、排序、数学、……

每道题目都会用 Java 和 kotlin 去实现,并且每道题目都有解题思路,如果你同我一样喜欢算法、LeetCode,可以关注我 GitHub 上的 LeetCode 题解:Leetcode-Solutions-with-Java-And-Kotlin

精选国外的技术文章

目前正在整理和翻译一系列精选国外的技术文章,不仅仅是翻译,很多优秀的英文技术文章提供了很好思路和方法,每篇文章都会有译者思考部分,对原文的更加深入的解读,可以关注我 GitHub 上的Technical-Article-Translation

About

仓库题解进度:剑指offer(14)、二叉树(12)、二分查找(3)、线性查找(1)、数组(2)、链表(1)、搜索算法(1)、动态规划(4)、位运算(1) 等等。update...... 如果对你有帮助,请在右上角 star 一下,感谢

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin78.7%
  • Java21.3%

[8]ページ先頭

©2009-2025 Movatter.jp