Leetcode
文章平均质量分 74
刷题
Geeksongs
AIGC连续创业者,全栈开发者。不惜一切代价,一切手段推动人类科技进步是我的终极目标。最想实现的是强人工智能,通过脑机接口和基因编辑实现人类永生。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 9:回文数(Python实现)
解法:总体来说就是把整数转化为字符串,然后反序,查看反序之后的字符串两个是否相同,相同就返回真,不相同就返回假Falseclass Solution: def isPalindrome(self, x: int) -> bool: number_one=str(x) i=len(number_one) string='' while i>0: string=string+number_one[原创 2020-10-20 16:05:13 · 242 阅读 · 0 评论 -
【数据结构】:树的先序,中序,后序遍历Python实现
我们先建立一棵简单的二叉树:代码如下所示:class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Nonel1 = TreeNode(1)l2 = TreeNode(2)l3 = TreeNode(3)...原创 2020-08-25 19:24:00 · 293 阅读 · 0 评论 -
【数据结构】:树的先序,中序,后序遍历
在数据结构当中一个很重要的结构则是树了,那么树的先序,中序,后序遍历是怎么进行起来的呢?一.先序遍历先序遍历是最简单的,也就是使用深度优先搜索(DFS)算法在树当中进行遍历,我们首先在树的左端走到底,在往下走的时候,没遇到一个节点就打印出来,直到走到底之后再向上返回,如果遇到已经打印,也就是走过的节点则查看这个节点的右端有没有没有打印的节点,如有则打印,没有则不打印。在下方这张图当中...原创 2020-08-20 10:36:00 · 1113 阅读 · 1 评论 -
《剑指offer》面试题13:两个链表的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)题目解析:这道题是什么意思呢?如下图所示:其中上面的为第一个链表,下面的为第二个链表,它们的公共结点指的就是它们结合之处的那个共同的节点。我们可以先将两个链表的Node分别放到不同的list列表里,然后对这两个列表里的Node进行遍...原创 2020-08-17 21:12:00 · 161 阅读 · 0 评论 -
《剑指offer》面试题12:合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路分析:这两个链表都是单调递增的,合并这两个链表的意思是将这两个链表全部打乱后,再根据从小到大的顺序进行重新指向,最后得到一个新的链表,我们可以直接使用递归的方法来做这个题目,代码如下:class Solution: # 返回合并后列表 #这个递归的方...原创 2020-08-17 16:44:00 · 150 阅读 · 0 评论 -
《剑指offer》面试题11:反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。题目解析:这个题目的题意其实非常简单,最开始我们的链表的指向是这样的:将其改变反向,变成如下所示的方向即可:可以看到最开始我们的表头指向了None,然后表尾却指向了倒数第二个链表,中间的链表指向全部反向,这也就是这个题目要让我们干的事情。那么我们如何实现这个链表的反转呢?首先我们开辟出一个新的空间nex...原创 2020-08-17 16:36:00 · 161 阅读 · 0 评论 -
《剑指offer》面试题10:链表中倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路:这个题目也延续了剑指offer题目当中信息不给全的传统,其中代码当中的第一个参数head表示链表的表头Node,k表示的是一个数字。我们只需要遍历所有Node,将这些Node放进一个栈当中即可(用列表来代替栈),然后找到栈当中的倒数第K个节点输出即可。代码如下:# -*- coding:utf-8 -*-# c...原创 2020-08-13 14:56:00 · 138 阅读 · 0 评论 -
《剑指offer》面试题9: 从尾到头打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解题思路:这个题目没有说清楚到底返回的是什么,在代码当中传入进来的值是一个Node对象,也就是链表当中的一个节点,它具有两个值,一个值是它本身所具有的值,另外一个值则是它所指向的下一个节点的地址,我们只要通过利用这个next指向下一个Node的属性,就可以很好的得到每一个节点所具有的值。然后题目当中隐含的意...原创 2020-08-13 14:24:00 · 156 阅读 · 0 评论 -
【数据结构】:链表(Python实现)
链表这个数据结构在我们做题时非常常见,链表上的每一个元素都包含了两个值,一个值是自身的值,另外一个值则是指向下一个元素的地址,这样一整个链表才能够串连起来。如下所示:其中第一个为单链表,每一个元素都指向了下一个元素,最后一个元素指向了None。第二个为循环链表,也是每一个元素都指向了下一个元素,只是最后一个元素不指向None,而是指向链表当中的第一个元素,这样整个链表就不断循...原创 2020-08-13 13:56:00 · 194 阅读 · 0 评论 -
《剑指offer》8:栈的压入,弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:# -*- coding:utf-8 -*-class...原创 2020-08-13 10:49:00 · 119 阅读 · 0 评论 -
《剑指offer》面试题14:树的子结构(Python)
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题目解析这个题目很明显可以使用递归来做,我们只需要判断其子数的结构是不是相同的就行了,这里也编写了两个函数。代码如下:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# s...原创 2020-08-26 19:53:00 · 122 阅读 · 0 评论 -
【Leetcode】2:两数相加(Python)
题目:解题思路:首先对两个链表进行遍历,然后将数字转化为字符串加起来 然后对整个字符串进行逆序,在逆序的同时赋值给新创建的链表代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# ...原创 2020-09-05 21:50:00 · 539 阅读 · 0 评论 -
【Leetcode】7:整数反转(Python)
我的方法很简单,使用str函数首先将int转化为str,然后将str放到一个栈当中进行栈的反转,最后对该栈进行处理,比如去掉0或者添加数字前面的"-"号,处理完之后将栈中的字符串拼接起来得到返回值即可,代码如下:class Solution: def reverse(self, x: int) -> int: newint=str(x) ...原创 2020-09-05 21:17:00 · 255 阅读 · 0 评论 -
【Leetcode】1:两数之和(Python)
给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2020-09-05 21:08:00 · 268 阅读 · 0 评论 -
《剑指offer》17:二叉搜索树的后序遍历
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。解题思路:我们随便构造一个二叉搜索树,看看有什么规律,假设我们构造了如下图所示这样的二叉树,则有:那么我们后序遍历的结果则是:[ 1,4,2,6,11,9,5]。我们可以看到最后一个数字就是这颗树的根部,同样的,由于具有二...原创 2020-09-05 13:23:00 · 183 阅读 · 0 评论 -
【Leetcode】104 :二叉树的最大深度
题目解析:利用递归的代码如下:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solu...原创 2020-08-28 22:34:00 · 184 阅读 · 0 评论 -
【Leetcode】100 : 相同的树(Python)
题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。题目解析:方法一:这个题目很明显就可以用递归来做,有关树的题目用递归来做基本上是我们需要想到的首选!如果两个树是相同的,我们只需要比较其树根是相同的,同时递归调用比较树根的下一级子树是相同的,那么则可以得到整个树的结构是相同的,我自己的方法如下:# D...原创 2020-08-28 19:52:00 · 317 阅读 · 0 评论 -
【Leetcode】101:对称二叉树(Python)
题目:题目解析:这个题目和之前我们做的稍微有一点不一样,需要我们在函数里面再写一个函数才能够进行递归,因为想要使用递归那么我们一定需要写出一个递进关系的表达式,而这个表示只通过一个传入参数root是不能够完成的,需要有两个传入参数才能够进行比较二叉树的两边是否对称,我们通过这个新的函数将传入的一个参数更改为传入两个参数就好了。还有一种则是广度优先搜索的方法来求解这道题,这两种...原创 2020-08-28 22:14:00 · 213 阅读 · 0 评论 -
【Leetcode 】21:合并两个有序链表(Python)
题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:直接使用递归,也就是整体法进行编写,假设其中第一个链表的数字比另一个数小,则将后面的两个链表使用merge函数打乱重新排序然后...原创 2020-08-27 21:01:00 · 411 阅读 · 0 评论 -
《剑指offer》面试题16:从上往下打印二叉树(Python)
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:这个题目其实非常基础了,也就是直接使用BFS广度优先搜索算法对整棵二叉树进行遍历即可,我们最后返回的是一个数组 "[]",把遍历之后的元素放到这个数组当中即可。为了进行BFS,我们首先新建一个队列,将树根部的节点放到队列里,然后弹出,弹出的同时将刚刚弹出的Node下面的两个节点放到队列的后面,这样...原创 2020-08-27 09:07:00 · 137 阅读 · 0 评论 -
《剑指offer》面试题15:二叉树的镜像(Python)
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7...原创 2020-08-27 08:11:00 · 188 阅读 · 0 评论 -
《剑指offer》面试题14:树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题目解析这个题目很明显可以使用递归来做,我们只需要判断其子数的结构是不是相同的就行了,代码如下:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val =...原创 2020-08-26 19:53:00 · 167 阅读 · 0 评论 -
《剑指offer》3:变态青蛙跳台阶
一.题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。二.题目解析假设我们从最后往前面跳,令最后一次跳的次数为f(n),那么f(n)=f(n-1)+f(n-2)+....+f(1),因为每往回跳一次,则可以往回跳1,2,3,4,.....n级,而随便在x级别台阶处往回跳,都具有f(x)种跳法。假设在第n-3级台阶,...原创 2020-08-08 10:39:00 · 139 阅读 · 0 评论 -
《剑指offer》2:青蛙跳台阶
一.题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。二.题目分析拿到这个题目我们冥思苦想也没有想到一个好的想法,于是从最简单的找规律开始吧!另台阶的级数为n,跳法的数量为ret.n=1, ret=1n=2, ret=2n=3, ret=3n=4, ret=5n=5, ret=8如下图所示:...原创 2020-08-05 14:49:00 · 184 阅读 · 0 评论 -
《剑指offer》1: 斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39这个题目大家在学编程的时候都应该遇到过,但是不能够使用递归解法,因为如果使用递归,就会超出时间,算法的复杂度是2^n。因此这里采用迭代的解法。代码如下所示:# -*- coding:utf-8 -*-class Solution:...原创 2020-08-03 21:01:00 · 167 阅读 · 0 评论
分享