自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 判断入环点

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 none.思路:使用快慢指针,先判断是否有环,若有慢指针重回起点,各走一步,重合点为入环点.class Node: def __init__(self,data): self.data = data self.next = None def __repr__(self): return f"Node({self.data})"class Solution: def

2020-06-29 23:29:26 144

原创 队列的基本方法

数组队列class Queue: def __init__(self): self.entries = [] self.front = 0 self.size = 0 def __repr__(self): printed = "<" + str(self.entries)[1:-1] + ">" return printed # 入队 enqueue def put(self,da

2020-06-28 11:07:57 242

原创 栈的基本方法

数组栈class Stack: def __init__(self,limit): self.stack = [] self.size = 0 def __str__(self): return str(self.stack)# 压栈 def push(self,data): self.stack.append(data) self.size += 1# 弹栈 def pop(self):

2020-06-28 11:06:25 203

原创 合并两个有序数组

给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。思路:定义两个指针,一个较大空间,从数组末尾开始,对比指针对应数值的大小,较大的数赋值给大空间.以此类推,最后需注意,因条件的限制,from typing import Listdef merge(self

2020-06-28 09:23:42 80

原创 两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。思路:数组排序后,定义两个指针,一个空集合,指针同时出发,对比数值大小,若相等添加到集合里,直到一方指针走完from typing import Listdef intersection(nums1: List[int], nums2: List[int]) -> List[int]: nums1.sort() nums2.sort() nums_set = set() i,j = 0,0 while i &lt

2020-06-28 09:14:42 62

原创 移除某一数值

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。思路:定义快慢指针,快指针去找要移除的数值,找到前进一步,否则赋值给慢指针,快慢指针各走一步,相当于将最后输出列表的元素存入慢指针内from typing import Listdef removeElement(self, nums: List

2020-06-25 22:00:27 149

原创 链表是否有环

判断链表是否有环思路:定义快慢指针,快指针走两步,慢指针走一步,如有环,快指针会与慢指针相等class Node: def __init__(self,data): self.data = data self.next = Nonedef circle(head): fast = head slow = head while fast and fast.next is not None: fast = fast.next.

2020-06-25 21:56:57 56

原创 有序数组去重

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。思路:定义快慢指针,让快指针去寻找重复值,找到慢指针走一步,快指针赋值慢指针from typing import Listdef removeDuplicates(self, num: List[int]) -> int: def remove(self,num: List[int]):

2020-06-25 21:54:09 672

原创 最接近的三个数之和

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。思路:数组排序,设定初始三数和还有与目标值的差,固定C位,使用对撞指针,查看三数和并且与目标值相减,遇到最小值覆盖.from typing import Listdef threeSumCloest(nums: List[int],target: int) -> int: nums.sort()

2020-06-25 21:46:16 120

原创 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。思路:给数组排序后,固定一个C位,范围是n-2个数,从它的右边使用对撞指针,优化:去重C位from typing import Listdef threeSum(nums :List[int]): nums.sort() result = [] for i in range(le

2020-06-25 21:31:11 101

原创 指针类型

一.首尾双指针(对撞指针)注意:1.一般用于寻找数组/双向链表中满足条件的两个节点;如果是寻找多个数,需要选取C位,范围是n-2 个数2.为了不遗漏所有可能情况,可能要求数组有序相关题型:有序两数之和,三数之和,最接近的三数之和二.同向双指针(快慢指针)注意:1.数组中,一般用于寻找满足某个条件的连续区间2.链表相关问题中经常会使用快慢双指针来寻找某个节点相关题型:有序数组去重,移动零到末尾,链表是否有环...

2020-06-25 21:27:45 80

原创 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。思路:定义左右指针,两数的和与目标值对比,较大右指针移动,较小左指针移动,直到找到和与目标值相等.from typing import Listdef twoSum(nums: List,target: int): left = 0 right = len(nums)-1 while l

2020-06-25 21:27:07 108

原创 数组的几个简单方法编写

class Array:def init(self,capacity):self.array = [None] * capacityself.size = 0def insert(self,index,element):if index < 0 or index > len(self.array):raise Exception(‘数组越界’)if self.size >= len(self.array):self.addcapacity()for i in range(

2020-06-21 23:13:14 244

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除