随笔分类 -  数据结构和算法

摘要:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其 阅读全文
posted @ 2022-12-28 16:54 Geeksongs 阅读(96) 评论(0) 推荐(0) 编辑
摘要:这个题目虽然说只有简单难度,但是实际上这个题目的难度很大。尤其是这种双指针的做法,很少有人能够想到。 我们可以设立一个快指针和一个慢指针,快指针在数组的第二个位置,也就是index=1的时候,慢指针在第一个位置,也就是在index=0的时候。 当快指针和慢指针所指向的元素的大小不相同的时候,慢指针就 阅读全文
posted @ 2021-10-20 22:36 Geeksongs 阅读(26) 评论(0) 推荐(0) 编辑
摘要:答案: class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ p0, cur, p2 = 0, 0, l 阅读全文
posted @ 2021-10-18 22:03 Geeksongs 阅读(25) 评论(0) 推荐(0) 编辑
摘要:这道题我看了解答感觉不是很对,因为并没有实现原地对数组进行修改。但还是记录一下,这种解题方法还是很值得学习的。 题目如下: 解答的方法如下: class Solution: def removeElement(self, nums: List[int], val: int) -> int: #原地移 阅读全文
posted @ 2021-10-18 20:59 Geeksongs 阅读(27) 评论(0) 推荐(0) 编辑
摘要:这个题目利用二叉搜索树的性质,一下子就简单得令人发指了,第k小的元素,正好就是对二叉搜索树进行中序遍历时的第k个元素,因此我们直接使用中序遍历,时间复杂度O(n),即可得到答案,代码如下: # Definition for a binary tree node. # class TreeNode: 阅读全文
posted @ 2021-10-14 21:39 Geeksongs 阅读(40) 评论(0) 推荐(0) 编辑
摘要:题目如下: 这个题目很有意思,就是我们可以先用先序遍历遍历整棵树,然后再重新进行原地修改,就可以了。代码如下: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, 阅读全文
posted @ 2021-10-13 22:16 Geeksongs 阅读(17) 评论(0) 推荐(0) 编辑
摘要:本题目如下: 这题目和二叉树的最大深度的题目有异曲同工之妙,代码如下: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self. 阅读全文
posted @ 2021-10-13 21:52 Geeksongs 阅读(31) 评论(0) 推荐(0) 编辑
摘要:这道题也是对102的一个变体,非常简单,我们只需要将拿到的res数组进行逆序,就可以了。题目如下: 代码如下; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, 阅读全文
posted @ 2021-10-11 22:00 Geeksongs 阅读(29) 评论(0) 推荐(0) 编辑
摘要:这个题目和leetcode102的题目非常类似,我们只需要对leetcode102的代码稍作修改就可以得到最终的答案了,我们来看看leetcode102的代码: class Solution: def levelOrder(self, root: TreeNode) -> List[List[int 阅读全文
posted @ 2021-10-11 21:52 Geeksongs 阅读(27) 评论(0) 推荐(0) 编辑
摘要:这个题目比较基础,可以对树的广度优先搜索的模版稍作更改,就可以得到我们的答案了。题目如下: 解答如下: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, righ 阅读全文
posted @ 2021-10-11 21:16 Geeksongs 阅读(30) 评论(0) 推荐(0) 编辑
摘要:广度优先遍历 广度遍历又叫层次遍历。用队列实现,依次将根,左子树,右子树存入队列,按照队列的先进先出规则来实现层次遍历。 # 层次遍历(广度优先) def BFS(root): if root: res = [] queue = [root] while queue: currentNode = q 阅读全文
posted @ 2021-10-10 16:42 Geeksongs 阅读(496) 评论(0) 推荐(0) 编辑
摘要:题目如下: 本题目的思路基本和105题的思路是相同的,主要要注意进行divide和conqure的时候,index的下标要调整正确,记住python是左闭右开的。 代码如下: # Definition for a binary tree node. # class TreeNode: # def _ 阅读全文
posted @ 2021-10-09 21:43 Geeksongs 阅读(29) 评论(0) 推荐(0) 编辑
摘要:这题目是有一个常见的套路的,由于先序遍历的结果list都会遵循这样的一个排列方式,也就是第一个是root,后面的分别是左子树的node的集合,以及右子树的node的集合。 [ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ] 而inorder中序遍历的结果则是: [ [左子树的中序 阅读全文
posted @ 2021-10-09 16:52 Geeksongs 阅读(36) 评论(0) 推荐(0) 编辑
摘要:这个题目居然是简单难度,吓了我一跳,本来一看到这个题目,我还一时半会儿没有想出来,后来想想这个题目可以作为模版题目,必须搞明白的题目,也就释然了。因为这个题目当中蕴含的思想非常经典,是一种典型的建立平衡二叉搜索树的方法,本题目的方法还可以推广到其他题目。可以多用于熟悉建立平衡二叉树。既然提到了平衡二 阅读全文
posted @ 2021-09-05 12:15 Geeksongs 阅读(56) 评论(0) 推荐(0) 编辑
摘要:这个题目直接递归就行,难度不大,就是要考虑全面一些哦,这道题应该也是剑指offer的原题 ,复习一下,挺简单的,代码如下: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left= 阅读全文
posted @ 2021-08-31 23:41 Geeksongs 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目如下: 本题目的精华在于不要用一个for循环遍历整个linked list,而是使用两个for或者三个for对同一个linked list从前到后进行遍历,同样也只遍历O(the number of nodes)=O(N)次,我尝试过仅使用一个while循环来写,虽然也是o(n),但是在穿针引线 阅读全文
posted @ 2021-08-31 23:26 Geeksongs 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目如下: 本题目可以引入两个变量,一个变量pre,一个变量instant,这两个既是变量,也是指针,我们用head指针不断往后进行移动,每往后移动一次,instant变量就保存当前head的指针,然后instant.next指向pre指针 ,然后将instant的地址赋予pre指针,这样pre就做 阅读全文
posted @ 2021-08-31 22:46 Geeksongs 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目如下: 这个题目,一看可以把链表的nods全部拿到,放到set哈希表里面,也可以放在list里面,然后循环判断是否有两个地址相同的node,但是由于时间的限制只能在o(n)以内,因此我们可以采用哈希表,也就是python里面的set来做这道题,解答如下: # Definition for sin 阅读全文
posted @ 2021-08-29 20:37 Geeksongs 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题目如下: 这个题目的要求让我们在O(n) time内完成,空间复杂度为O(1),因此我们只能遍历一次,然后使用常数个变量,因此我们立马就会想到使用两个变量,一个用于保留奇数链表的指针,另一个用来保留偶数链表的指针,然后我们遍历整个head 链表,遇到奇数就将奇数指针往后移动,遇到偶数也分别往后移动 阅读全文
posted @ 2021-08-28 23:52 Geeksongs 阅读(38) 评论(0) 推荐(0) 编辑
摘要:题目如下: 本体可以直接使用简介形解法: # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = nex 阅读全文
posted @ 2021-08-28 21:35 Geeksongs 阅读(54) 评论(0) 推荐(0) 编辑

Coded by Geeksongs on Linux

All rights reserved, no one is allowed to pirate or use the document for other purposes.

点击右上角即可分享
微信分享提示