<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Tower666的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Tower666</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Tower666]]></copyright><item><title><![CDATA[基于OnnxRuntime推理类C++版本]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/127860051</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/127860051</guid><author>Tower666</author><pubDate>Tue, 15 Nov 2022 10:12:18 +0800</pubDate><description><![CDATA[近来可能有几个项目需要使用C++做模型推理的任务，为了方便模型的推理，基于OnnxRuntime封装了一个推理类，只需要简单的几句话就可以完成推理，方便后续不同场景使用。]]></description><category></category></item><item><title><![CDATA[99. 恢复二叉搜索树]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107880978</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107880978</guid><author>Tower666</author><pubDate>Sat, 08 Aug 2020 15:53:16 +0800</pubDate><description><![CDATA[99. 恢复二叉搜索树
二叉搜索树中的两个节点被错误地交换。
请在不改变其结构的情况下，恢复这棵树。
示例 1:
输入: [1,3,null,null,2]

   1
  /
 3
  \
   2

输出: [3,1,null,null,2]

   3
  /
 1
  \
   2

示例 2:
输入: [3,1,4,null,null,2]

  3
 / \
1   4
   /
  2

输出: [2,1,4,null,null,3]

  2
 / \
1   4
   /
  3

进阶:]]></description><category></category></item><item><title><![CDATA[207. 课程表]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107782792</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107782792</guid><author>Tower666</author><pubDate>Tue, 04 Aug 2020 11:26:07 +0800</pubDate><description><![CDATA[207. 课程表
你这个学期必须选修 numCourse 门课程，记为 0 到 numCourse-1 。
在选修某些课程之前需要一些先修课程。 例如，想要学习课程 0 ，你需要先完成课程 1 ，我们用一个匹配来表示他们：[0,1]
给定课程总量以及它们的先决条件，请你判断是否可能完成所有课程的学习？
示例 1:
输入: 2, [[1,0]] 
输出: true
解释: 总共有 2 门课程。学习课程 1 之前，你需要完成课程 0。所以这是可能的。

示例 2:
输入: 2, [[1,0],[0,1]]
输出]]></description><category></category></item><item><title><![CDATA[632. 最小区间]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107726325</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107726325</guid><author>Tower666</author><pubDate>Sat, 01 Aug 2020 09:47:45 +0800</pubDate><description><![CDATA[632. 最小区间
你有 k 个升序排列的整数数组。找到一个最小区间，使得 k 个列表中的每个列表至少有一个数包含在其中。
我们定义如果 b-a &lt; d-c 或者在 b-a == d-c 时 a &lt; c，则区间 [a,b] 比 [c,d] 小。
示例 1:
输入:[[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]
输出: [20,24]
解释: 
列表 1：[4, 10, 15, 24, 26]，24 在区间 [20,24] 中。
列表 2：[0, 9, 1]]></description><category></category></item><item><title><![CDATA[343. 整数拆分]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107682464</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107682464</guid><author>Tower666</author><pubDate>Thu, 30 Jul 2020 09:47:01 +0800</pubDate><description><![CDATA[343. 整数拆分
给定一个正整数 n，将其拆分为至少两个正整数的和，并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
示例 1:
输入: 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:
输入: 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

说明: 你可以假设 n 不小于 2 且不大于 58。
陷入瓶颈了，简单的觉得太简单，难得太难做不出来，咋办啊。
class Solution {
    public int int]]></description><category></category></item><item><title><![CDATA[329. 矩阵中的最长递增路径]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107589162</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107589162</guid><author>Tower666</author><pubDate>Sun, 26 Jul 2020 09:19:06 +0800</pubDate><description><![CDATA[329. 矩阵中的最长递增路径
给定一个整数矩阵，找出最长递增路径的长度。
对于每个单元格，你可以往上，下，左，右四个方向移动。 你不能在对角线方向上移动或移动到边界外（即不允许环绕）。
示例 1:
输入: nums = 
[
  [9,9,4],
  [6,6,8],
  [2,1,1]
] 
输出: 4 
解释: 最长递增路径为 [1, 2, 6, 9]。

示例 2:
输入: nums = 
[
  [3,4,5],
  [3,2,6],
  [2,2,1]
] 
输出: 4 
解释: 最长递增路径是]]></description><category></category></item><item><title><![CDATA[410. 分割数组的最大值]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107574870</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107574870</guid><author>Tower666</author><pubDate>Sat, 25 Jul 2020 10:23:49 +0800</pubDate><description><![CDATA[410. 分割数组的最大值
给定一个非负整数数组和一个整数 m，你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。
注意:
数组长度 n 满足以下条件:

1 ≤ n ≤ 1000
1 ≤ m ≤ min(50, n)

示例:
输入:
nums = [7,2,5,10,8]
m = 2

输出:
18

解释:
一共有四种方法将nums分割为2个子数组。
其中最好的方式是将其分为[7,2,5] 和 [10,8]，
因为此时这两个子数组各自的和的最大值为18，]]></description><category></category></item><item><title><![CDATA[64. 最小路径和]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107529757</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107529757</guid><author>Tower666</author><pubDate>Thu, 23 Jul 2020 09:57:22 +0800</pubDate><description><![CDATA[64. 最小路径和
给定一个包含非负整数的 m x n 网格，请找出一条从左上角到右下角的路径，使得路径上的数字总和为最小。
**说明：**每次只能向下或者向右移动一步。
示例:
输入:
[
  [1,3,1],
  [1,5,1],
  [4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。

这题之前做过了。简单dp。而且原数组操作就可以，都不需要额外的空间。那么为什么我空间还是只击败百分之20的人呢？
class Solution {
    public int minP]]></description><category></category></item><item><title><![CDATA[96. 不同的二叉搜索树]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107353553</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107353553</guid><author>Tower666</author><pubDate>Wed, 15 Jul 2020 10:00:54 +0800</pubDate><description><![CDATA[96. 不同的二叉搜索树
给定一个整数 n，求以 1 … n 为节点组成的二叉搜索树有多少种？
示例:
输入: 3
输出: 5
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1  ]]></description><category></category></item><item><title><![CDATA[120. 三角形最小路径和]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107331866</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107331866</guid><author>Tower666</author><pubDate>Tue, 14 Jul 2020 10:01:20 +0800</pubDate><description><![CDATA[120. 三角形最小路径和
给定一个三角形，找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。
相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。
例如，给定三角形：
[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]

自顶向下的最小路径和为 11（即，2 + 3 + 5 + 1 = 11）。
说明：
如果你可以只使用 O(n) 的额外空间（n 为三角形的总行数）来解决这个问题，那么你的算法会很]]></description><category></category></item><item><title><![CDATA[350. 两个数组的交集 II]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107311202</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107311202</guid><author>Tower666</author><pubDate>Mon, 13 Jul 2020 10:02:59 +0800</pubDate><description><![CDATA[350. 两个数组的交集 II
给定两个数组，编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]

示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]

说明：

输出结果中每个元素出现的次数，应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。

*进阶:*

如果给定的数组已经排好序呢？你将如何优化你的算法？
如果 nums1 的大小比 nu]]></description><category></category></item><item><title><![CDATA[174. 地下城游戏]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107295332</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107295332</guid><author>Tower666</author><pubDate>Sun, 12 Jul 2020 09:48:56 +0800</pubDate><description><![CDATA[174. 地下城游戏
一些恶魔抓住了公主（P）并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士（K）最初被安置在左上角的房间里，他必须穿过地下城并通过对抗恶魔来拯救公主。
骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下，他会立即死亡。
有些房间由恶魔守卫，因此骑士在进入这些房间时会失去健康点数（若房间里的值为负整数，则表示骑士将损失健康点数）；其他房间要么是空的（房间里的值为 0），要么包含增加骑士健康点数的魔法球（若房间里的值为正整数，则]]></description><category></category></item><item><title><![CDATA[315. 计算右侧小于当前元素的个数]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107283185</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107283185</guid><author>Tower666</author><pubDate>Sat, 11 Jul 2020 12:41:02 +0800</pubDate><description><![CDATA[315. 计算右侧小于当前元素的个数(插入排序+二分查找 与 线段树两种方法)
给定一个整数数组 nums，按要求返回一个新数组 counts。数组 counts 有该性质： counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。
示例:
输入: [5,2,6,1]
输出: [2,1,1,0] 
解释:
5 的右侧有 2 个更小的元素 (2 和 1).
2 的右侧仅有 1 个更小的元素 (1).
6 的右侧有 1 个更小的元素 (1).
1 的右侧有 0 个更小的元素.

我用]]></description><category></category></item><item><title><![CDATA[309. 最佳买卖股票时机含冷冻期]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107242320</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107242320</guid><author>Tower666</author><pubDate>Fri, 10 Jul 2020 08:35:47 +0800</pubDate><description><![CDATA[309. 最佳买卖股票时机含冷冻期
给定一个整数数组，其中第 i 个元素代表了第 i 天的股票价格 。
设计一个算法计算出最大利润。在满足以下约束条件下，你可以尽可能地完成更多的交易（多次买卖一支股票）:

你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
卖出股票后，你无法在第二天买入股票 (即冷冻期为 1 天)。

示例:
输入: [1,2,3,0,2]
输出: 3 
解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]

没有思路，最后参考了大佬的思路写的代码。难以想象]]></description><category></category></item><item><title><![CDATA[面试题 17.13. 恢复空格]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107222058</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107222058</guid><author>Tower666</author><pubDate>Thu, 09 Jul 2020 10:19:18 +0800</pubDate><description><![CDATA[面试题 17.13. 恢复空格
哦，不！你不小心把一个长篇文章中的空格、标点都删掉了，并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前，你得先把它断成词语。当然了，你有一本厚厚的词典dictionary，不过，有些词没在词典里。假设文章用sentence表示，设计一个算法，把文章断开，要求未识别的字符最少，返回未识别的字符数。
**]]></description><category></category></item><item><title><![CDATA[面试题 16.11. 跳水板]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107196277</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107196277</guid><author>Tower666</author><pubDate>Wed, 08 Jul 2020 07:15:53 +0800</pubDate><description><![CDATA[面试题 16.11. 跳水板
你正在使用一堆木板建造跳水板。有两种类型的木板，其中长度较短的木板长度为shorter，长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法，生成跳水板所有可能的长度。
返回的长度需要从小到大排列。
示例：
输入：
shorter = 1
longer = 2
k = 3
输出： {3,4,5,6}

提示：

0 &lt; shorter &lt;= longer
0 &lt;= k &lt;= 100000

还想骗我用dfs，休想。
思路十分简单，处理掉]]></description><category></category></item><item><title><![CDATA[112. 路径总和]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107173254</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107173254</guid><author>Tower666</author><pubDate>Tue, 07 Jul 2020 08:45:58 +0800</pubDate><description><![CDATA[112. 路径总和
给定一个二叉树和一个目标和，判断该树中是否存在根节点到叶子节点的路径，这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树，以及目标和 sum = 22，
              5
             / \
            4   8
           /   / \
          11  13  4
         /  \      \
        7    2      1

返回 true, 因]]></description><category></category></item><item><title><![CDATA[63. 不同路径 II]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107150886</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107150886</guid><author>Tower666</author><pubDate>Mon, 06 Jul 2020 10:02:26 +0800</pubDate><description><![CDATA[63. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 （起始点在下图中标记为“Start” ）。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角（在下图中标记为“Finish”）。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径？

网格中的障碍物和空位置分别用 1 和 0 来表示。
**说明：**m 和 n 的值均不超过 100。
示例 1:
输入:
[
  [0,0,0],
  [0,1,0],
  [0,0,0]
]
输出: 2
解释:
3x3 网格]]></description><category></category></item><item><title><![CDATA[44. 通配符匹配]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107134370</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107134370</guid><author>Tower666</author><pubDate>Sun, 05 Jul 2020 09:08:06 +0800</pubDate><description><![CDATA[44. 通配符匹配
给定一个字符串 (s) 和一个字符模式 (p) ，实现一个支持 '?' 和 '*' 的通配符匹配。
'?' 可以匹配任何单个字符。
'*' 可以匹配任意字符串（包括空字符串）。

两个字符串完全匹配才算匹配成功。
说明:

s 可能为空，且只包含从 a-z 的小写字母。
p 可能为空，且只包含从 a-z 的小写字母，以及字符 ? 和 *。

示例 1:
输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字符串。

示例 2:
输入:
s]]></description><category></category></item><item><title><![CDATA[32. 最长有效括号]]></title><link>https://blog.youkuaiyun.com/Tower666/article/details/107119760</link><guid>https://blog.youkuaiyun.com/Tower666/article/details/107119760</guid><author>Tower666</author><pubDate>Sat, 04 Jul 2020 09:22:21 +0800</pubDate><description><![CDATA[32. 最长有效括号
给定一个只包含 '(' 和 ')' 的字符串，找出最长的包含有效括号的子串的长度。
示例 1:
输入: "(()"
输出: 2
解释: 最长有效括号子串为 "()"

示例 2:
输入: ")()())"
输出: 4
解释: 最长有效括号子串为 "()()"

开始我还在想为啥题目难度是困难。给的示例就离谱，一点都不有利于人理解题意。动态规划题目。代码：
class Solution {
    public int longestValidParentheses(String s) ]]></description><category></category></item></channel></rss>