自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 中缀表达式求值(C++)

整数中缀表达式求解问题#include <iostream>#include <vector>#include <stack>#include <unordered_map>using namespace std;int cal(char oper, stack<int> &operands) { int num_after = operands.top(); operands.pop(); if (o

2021-11-09 22:49:40 776

原创 给定入栈顺序,输出所有出栈可能性(c++实现)

给定入栈顺序,输出所有出栈可能性入栈顺序为{ 1, 2 … n }#include <iostream>#include <vector>#include <stack>using namespace std;void back_track(vector<int> ans, stack<int> stk, stack<int> input, vector<vector<int>>& resu

2021-11-08 20:14:48 2601 3

原创 122. 买卖股票的最佳时机 II

class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); vector<pair<int, int>> dp(n, {0, 0}); dp[0].first = 0; dp[0].second = -prices[0]; for (int i = 1; i <

2020-11-08 11:31:08 110 1

原创 20.有效的括号

class Solution {public: bool isValid(string s) { int n = s.size(); if (n <= 1) { return false; } stack<char> stk; for (int i =0; i < n; ++i) { if (s[i] == '(' or s[i] == '[' o

2020-11-06 13:48:57 84

原创 200. 岛屿数量

找到‘1’后向周围扩散,搜索到的‘1’全置为‘0’class Solution {public: void dfs(vector<vector<char>>& grid, int row, int col) { int rowMax = grid.size(), colMax = grid[0].size(); grid[row][col] = '0'; if (row - 1 >= 0 &&

2020-11-06 13:32:07 61

原创 3. 无重复字符的最长子串

class Solution {public: int lengthOfLongestSubstring(string s) { int n = s.length(); if (n == 0) { return 0; } vector<int> store(128, 0); int left = 0, ans = 0; for (int i = 0; i < n

2020-11-06 12:59:02 70

原创 763. 划分字母区间

首先将出现的字母最后出现的下标存入end数组中,然后从头遍历,假设string中第一个字母结束位置为i,则遍历0到i,如果在此子串中出现的字母结尾位置j大于i,则更新i为j,一直遍历到子串中所有的字母都只出现在字串内,然后将该字串长度存入ans中,之后继续遍历。例:S = “ababcbacadefegdehijhklij”子串为"ababcbaca", “defegde”, “hijhklij”ans = [9, 7, 8]class Solution {public: vector&l

2020-10-22 23:30:49 64

原创 925. 长按键入

当两个指针指向的字母不同时返回false,当name遍历到最后一个字母时,遍历typed剩下的字母,若不想等则返回false。当遇到连续的情况,如果typed连续,name不连续则仅移动指向typed的指针,其他情况(两者相等且字母不连续相等,或name和typed字母同时连续相等)则移动两个指针。class Solution {public: bool isLongPressedName(string name, string typed) { int n = name.siz

2020-10-21 18:17:22 142

原创 1292. 元素和小于等于阈值的正方形的最大边长

P用于存放原矩阵子矩阵的和,P[i][j]表示矩阵mat[1][1]至[i][j]的和,若要求[a][b]到[c][d]的和,则用P[c][d] - P[a][d] - P[c][b] + P[a][b]class Solution {public: int maxSideLength(vector<vector<int>>& mat, int threshold) { int row = mat.size(); int col =

2020-10-21 00:30:02 75

原创 1. 两数之和

利用哈希表存储数组并查找target值减去当前遍历到的值是否在哈希表中class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> hashTable; for (int i = 0; i < nums.size(); ++i) { auto it = h

2020-10-19 22:06:10 53

原创 862. 和至少为 K 的最短子数组

sum数组用于存放前n项和,如sum[i + 1]即为前i项和sum[j] - sum[k] 相当于原数组[j,k]这个区间的和sum[0] = 0是为了方便后面直接利用前n项和,当没有出现负数替换掉0的情况时sum[i] - sum[dq.front()](实际上就是sum[i] - sum[0])可获得前n项和利用deque存放sum中元素,在遍历sum时,若dq末尾存放的数字对应的sum大于当前遍历到的sum值,则pop出这样便可以获得递增序列,当首位两元素对应的sum的插值大于等于K,则p

2020-10-18 00:51:06 73

原创 1403. 非递增顺序的最小子序列

将数组按倒序排序后,依次将数组中最大的数加入新数组,比较两者之和class Solution {public: vector<int> minSubsequence(vector<int>& nums) { sort(nums.begin(), nums.end(), [](auto& a, auto b){ return a > b; }); int sum = 0;

2020-10-18 00:42:16 53

原创 300.最长上升子序列

动态规划方法class Solution {public: int lengthOfLIS(vector<int>& nums) { int n = nums.size(); if (n == 0) return 0; vector<int> dp(n, 1); for (int i = 0; i < n; ++i){ for(int j = 0; j < i; +

2020-10-17 19:47:58 69

原创 51.N皇后问题

基于集合的回溯class Solution {public: void backTrack(int n, int row, unordered_set<int>& col, unordered_set<int>& diagnalLeft, unordered_set<int>& diagnalRight, vector<vector<int>>& ret, vector<int>& p

2020-10-17 19:14:15 72

原创 363.矩形区域不超过 K 的最大数值和

矩形区域不超过 K 的最大数值和先将二维矩阵问题转化为一维数组求最大子数组和问题将矩阵每列相加,得到一个数组即可转换首先要遍历获取1col至rowcol所有的矩阵,并将其转化为一维数组求出的数组最大子数组即相当于最大子矩阵若最大子数组的和大于阈值,则利用暴力算法求出数组中小于等于阈值的最大子数组之和利用ans存放每个子矩阵小于等于阈值的最大值返回ans中最大的值即为结果class Solution {public: int maxSumSubmatrix(vector<vec

2020-10-16 21:07:07 173

原创 两次torch.sort求元素在排序后的位置

两次torch.sort求元素在排序后的位置目的:利用两次sort求原张量中每个元素第几小(大),测试用例如下import torchts = torch.randn((1, 5), dtype=torch.float)print(ts)srt1, idx = ts.sort(dim=1)print(idx)srt2, rank = idx.sort(dim=1) print(rank)。。。。得到的结果如下tensor([[-1.2281, 0.6057, -1.1720,

2020-07-22 21:37:34 1022

空空如也

空空如也

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

TA关注的人

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