- 博客(17)
- 收藏
- 关注
原创 DFS深度优先搜索 LeetCode-417
这道题需要定义的变量较多,要记录已经遍历过的,能流到太平洋和大西洋的坐标分别记在对应的集合。此外用一个标志位offset,能流到太平洋的offset等于10,能流到大西洋的offset等于100。 上面图只是帮助理解,因为最外面肯定能流到太平洋或者大西洋,所以offset初始值为10或者100,真正的遍历过程并非如此,但是都是从外面的一圈开始遍历,向上下左右满足条件的方向遍历,然后赋予对应的offset值。 解题关键在于DFS函数的编写,根据深度优先搜索的思想,步骤如下: 1、定义一个矩阵matrix..
2021-08-30 20:00:33
460
原创 DFS解决迷宫问题
DFS解决树的问题比较常见也比较简单,通常用栈来解决。现在来看看DFS怎么解决迷宫问题,理解好这个解题思路可以扩展到解更复杂的题。 在起点位置按右,下,左,上的顺序遍历,比如上图,起点右边为空,则走到右边(第1步);第1步的右边为障碍物则判断下方是否为空,为空即走第二步;同理第二步优先判断能否往右走,若右边为障碍物则判断下、左、右;直到到达终点。下图为遍历出来的其中一条路线。按照这个原理可以找出每一条路线,记录每一条路线的总长,得到最短的路径长度。 class Solution { int p,q;
2021-08-30 19:57:51
2808
2
原创 BFS代码核心框架
一、BFS:使用队列保存未被检测的点,结点按照宽度优先的次序被访问和进出队列。 下面用树来讲述BFS。 例题 牛客网NC15 import java.util.*; public class Solution { public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { // write code here ArrayList<ArrayList<Int
2021-08-29 16:11:47
709
原创 BFS广度优先搜索 LeetCode-433
例题1(LeetCode 433) 解题思路: 因为从start到end过程中,每次基因变化都得是基因库bank里面存在的基因,如上面示例2: AACCGGTT 变到 AAACGGTA:AACCGGTT----AACCGGTA----AACCGGTA; 经历了两次基因变化,变化过程中的AACCGGTA、AACCGGTA都是基因库中有的。 求最少的变化次数则考虑用广度优先搜索。 步骤 1.首先判断start是否等于end;基因库中是否存在end; 2.遍历基因库bank,把与start相差一个字符的(因为
2021-08-28 23:52:54
310
原创 并查集总结
1.作用 并查集,顾名思义“合并”和“查找”,是一种树形的数据结构,合并一些不相交的集合以及查找根节点等问题,可以用来解决连通性问题。 下面用一个例子“诠释”这个合并和查找的问题: 假设某市里有10个小镇,两个小镇之间的连线表示连接该两个小镇的路,比如小镇1和小镇2直接相连,小镇1和小镇3间接相连。 “查”:给你两个小镇,让你判断两个小镇是否相连(直接相连或者间接相连),则查找每个小镇的“根节点”是否相同,如果“根节点”为同一个镇的话则说明这两个镇是相连的,否则不相连。 “并”:问这些小镇是否已经全连通,如
2021-08-11 22:52:28
252
原创 单调栈总结
一、单调栈 1.单调栈中存放的数据是有序的 单调递增栈:从栈顶到栈底单调第增; 单调递减栈:从栈顶到栈底单调第减。 2.声明单调栈 Deque<E> stack = new ArrayDeque<>(); Deque是Queue的子接口,我们知道Queue是一种队列形式,而Deque则是双向队列,它支持从两个端点方向检索和插入元素,因此Deque既可以支持LIFO形式也可以支持LIFO形式.Deque接口是一种比Stack和Vector更为丰富的抽象数据形式,因为它同时实现了以上两
2021-08-10 19:39:49
184
原创 分治算法总结
一、使用情形:子问题与原问题性质相同,子问题相互独立。 分-治-合:1、分解子问题;2、解决子问题;3、合并子问题解为原问题的解 二、非递归分治 包括:选择排序、插入排序、冒泡排序、堆排序 1、选择排序:n个元素的排序问题转化为n-1次选择最小值问题 把6、3、1、7、4按从小到大顺序排 |6|3|1|7|4| ------------------|1|6|3|7|4| |6|3|7|4|---------------------|3|6|7|4| |6|7|4|----------------------
2021-08-10 11:22:59
1972
原创 动态规划总结
一、动态规划的题目大致可以归纳为三种类型: 1.计数型:如计算达到目标状态的方法数; 2.求最值型:如求升子序最长的长度、以最少硬币凑指定面值; 3.存在性:如能否选出k个数的和等于sum。 二、解题步骤 1.确定最终状态 确定最终状态要做两个工作:1)达到最优策略有哪几种方式;2)由最优策略(即大问题)转为一个个子问题。 2.转移方程 写出子问题的通式。 3.确定初始条件,和边界情况(要细心,考虑周全) 4.计算顺序 三、计数型例题 LeetCode-70题 1.确定最终状态:爬到n阶有两种方法:从(n
2021-08-07 16:24:27
187
原创 leetcode-445两数相加
题目: 一、主要操作 1、进栈出栈:考虑到要从链尾开始相加,还要考虑进位,所以采用进栈出栈的方法,先所有链表的数进栈,出栈的时候链尾的数相加。 stack1 = [] #定义一个栈 # 入栈函数 def push_stack(p,stack): while p: stack.append(p.val) p = p.next # 调用入栈函数 push_stack(l1,stack1) # l1为需要入栈的链表 2、用头插法进行逆序:因为链尾先相加,相加结果依然要放到链尾,故要用头插法进行逆序
2021-05-05 11:33:42
140
原创 LeetCode-206反转链表
官网给出了两个方法:递归法和迭代法 递归法代码 class Solution: def reverseList(self, head: ListNode) -> ListNode: if head == None or head.next == None://递归终止条件 return head p = self.reverseList(head.next) head.next.next = head .
2021-04-29 15:33:39
108
原创 LeetCode-160相交链表
题目: 下面代码相当于将A和B首尾连接起来,遍历一遍 class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: n1, n2 = headA, headB while n1!=n2: # while循环实现的效果为上图内容 n1 = n1.next if n1 else headB # n1从A链表从头指向链
2021-04-28 20:31:18
204
原创 LeetCode刷题笔记-两数相加,ListNode
在LeetCode上刷题时对listnode的使用不是很理解。ListNode是一个类: class ListNode: def __init__(self, val=0, next=None): self.val = val # val为变量值, self.next = next # next为下一节点的指针 定义ListNode为链表的一个节点,该节点存储了两个变量val和next,即该节点值和下一个节点的指针,当next为空时表示该节点是链表的最后一个
2021-04-27 19:41:17
1433
3
原创 pytorch自学教程(四)
pytorch中如何加载数据 一、pytorch数据主要涉及两个类:dataset和dataloader 1、dataset提供一种方式去获取数据及其label: 1)如何获取每一个数据及其label 2)告诉我们总共有多少的数据(神经网络是经常要对一个数据迭代多次,当我们知道有多少数据需要训练的时候,他才知道我们要训练多少次才能把数据迭代完,进行下一次迭代) 2、dataloader为后面的网络提供不同的数据形式 二、Dataset代码实践 1、首先下载一个数据集,链接:https://pan.baidu
2021-04-06 21:36:00
379
原创 pytorch自学教程(三)
本内容为初学者自学笔记,如有错误,欢迎指出 一、pytorch学习中两大法宝函数 把pytorch看作一个工具箱,工具箱里面有几个分隔区,每个分隔区有几种工具或者更小的工具箱; 1、dir():打开工具箱,看看里面有什么 比如:dir(pytorch),则输出1、 2、 3、 4.。。。个分隔区 接着dir(pytorch.3),则输出a, b, c几个工具 2、help():说明书 help(pytorch.3.a),则输出该工具的用途,如何使用 二、将两大法宝函数用起来 1、打开pycharm,按照上一
2021-04-01 19:54:59
342
原创 pytorch自学教程(二)
pytorch自学教程(二) 本文内容为初学者自学笔记,如有错误,欢迎指出 一、 安装pycharm 安装教程略 二、新建项目 点击create,创建完成。在界面下方对话框输入import pytorch,如下图所示表示成功导入。 然后检查能不能使用conda指令,输入torch.cuda.is_available(),返回True则说明 ...
2021-03-31 14:35:32
335
2
原创 解决torch.cuda.is_available()返回False的问题
解决torch.cuda.is_available()返回False的问题 返回false有可能是电脑不支持CUDA,也有可能是版本不匹配。 首先,pytorch和cuda要有对应的关系,具体参考https://blog.youkuaiyun.com/weixin_43839245/article/details/108274605 显卡驱动路径:C:\NVIDIA\DisplayDriver\461.92\Win8_Win7_64\International ...
2021-03-31 11:21:44
1132
原创 pytorch自学教程(一)
pytorch自学教程(一) 一、anaconda安装 首先需要下载anaconda,它里面包含了大量的package(工具包),平时在深度学习、机器学习中一个个安装package很麻烦,而且容易出现一些问题。于是就有了anaconda,他是一个集成了应用于科学分析的大量的package的一个软件,也就是只要你安装了anaconda就安装了后面我们要用的大量package。 进入网站https://repo.anaconda.com/ 下载之后,双击安装,记住安装路径,后面选择默认 安装成功后,在开始菜
2021-03-30 10:08:31
9215
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅