- 博客(16)
- 收藏
- 关注
原创 环形链表
环形链表 class Solution: def hasCycle(self, head: ListNode) -> bool: fast,slow=head,head while fast and fast.next: #以快指针为循环结束条件,则比较方便 fast=fast.next.next slow=slow.next if fast==slow: r
2021-03-09 22:37:28
146
原创 品味二分查找
二分查找细节很多啊!!! 一、寻找一个数(基本的二分搜索) int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 双闭区间 while(left <= right) { //[left,right]区间内元素为空时返回.比如[3,2]时,返回 int mid = left + (right - left) / 2; //防止溢出
2021-03-09 21:28:29
134
原创 146. LRU 缓存机制
146. LRU 缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它
2021-03-07 12:50:15
137
原创 完全二叉树的节点个数
完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h2^h2h个节点。 思路 完全二叉树的左右子树必有一个满二叉树。对该满二叉子树,只需计算高度即可 ...
2021-03-03 20:21:05
432
1
原创 二叉树的最近公共祖先
二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 思路: 1.寻找一个深度尽可能大的节点,优先考虑后序遍历 2.后序遍历寻找到的第一个满足以下条件的节点,即为最近公共祖先: (左子树,右子树各包含一个p或q)或者(该公共祖先即为其中一个,其左右子树包含另一个) ...
2021-03-03 18:18:31
152
1
原创 Python的传值和传值
变量a传入函数f之后,函数内部对a进行的操作会不会影响到函数外部的a? code.1 def f(a): a[1]=99 a=[1,2,3] f(a) print(a) #[1, 99, 3] 有影响 code.2 def f(a): a=[1] a=[1,2,3] f(a) print(a) #[1, 2, 3] 无影响 code.3 class A: def __init__(self,v): self.v=v def f(a:A): a.v=1
2021-02-26 16:36:50
283
1
原创 验证二叉搜索树
验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树 思路: 1.中序遍历为升序 是 搜索树合法 的 充分必要条件 2.递归确定每一个结点是否在规定的区间 ...
2021-02-26 12:50:26
124
原创 算法随笔
寻找重复的子树 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 重点: 如何使用一个字符串表示一棵树。 “,”.join(数的先序遍历列表,空的叶子节点用#表示) ...
2021-02-25 21:08:36
116
原创 DP表
动态规划-DP表题目思路 题目 最佳买卖股票时机含冷冻期 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 示例: 输入: [1,2,3,0,2] 输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出] 思路 DP表问题首先分清“状
2021-02-22 16:06:31
1427
原创 2021-01-06
合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6] 思路:双指针,.
2021-01-06 15:53:28
111
原创 2021-01-05
买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。 .
2021-01-05 16:39:22
149
原创 2021-01-04
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 思路:使用字典加速索引 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的
2021-01-04 19:08:56
118
原创 仅适用CPU进行训练
仅适用CPU进行训练 import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "-1" 要在import keras之前加上上述代码
2020-01-11 10:34:32
777
原创 PyTorch中损失函数NLLLoss与CrossEntropyLoss区别
实验代码: import torch from torch import nn input=torch.randn(3,3) print(input) sm=nn.Softmax(dim=1) loss1=torch.nn.NLLLoss() target=torch.tensor([0,2,1]) print(loss1(torch.log(sm(input)),target)) los...
2019-09-11 19:20:30
2198
原创 ## pytorch中view和permute函数改变张量维度方式的不同
pytorch中view和permute函数改变张量维度方式的不同 说的有点太抽象了。结合代码自己理解一下吧。。 实验代码: import torch import numpy as np a=np.array([ [ [1,2,3], [4,5,6] ] ...
2019-09-04 20:19:06
794
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅