![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣
无情的搬砖机器
不求甚解
展开
-
动态规划学习笔记2
本文记录自己的学习心得和一些要点,墙裂推荐参考此连接进行学习一、0-1背包问题d1、尝试对于动态规划问题最重要的是如何定义好dp数组的含义,可以通过dp数组前面的值推出后面的结果。对于0-1背包问题,我定义的dp数组的含义为:dp[i]表示容量为i的选择的最大价值。容量为W的袋子,i∈[1,W],对于容量为i的时候,当前第j(j∈[0,N])个物品可以选择装进袋子或者不装进袋子:也就是dp[i] = max(dp[i-1],val[i-1]+dp[i-wt[i-1]]);这里i.原创 2020-06-08 11:51:13 · 283 阅读 · 0 评论 -
动态规划学习笔记1
本文记录自己的学习心得和一些要点,墙裂推荐参考此连接进行学习一、从斐波那契入手记忆搜索算法实现斐波那契int helper(vector<int>& memo, int n){ if (n == 1 || n == 2)return 1; if (memo[n] != 0) return memo[n];//只要不是0就会记录下来 memo[n] = helper(memo, n - 1) + helper(memo, n - 2); return memo[n].原创 2020-06-07 10:37:02 · 427 阅读 · 0 评论 -
力扣2--两数相加详解
一、第一种方法(失败):1、简单以为将两个链表的val转换成数值比如3->4->5转换成543,7->8->9转换成987,然后相加即:543+987 = 1503,最后再转换回来输出 3->0->5->1即可class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { //将第一个链表存入栈中 ListNode* temp = l1; stac.原创 2020-06-02 22:14:48 · 691 阅读 · 0 评论 -
LeetCode147--对链表进行插入排序
插入排序从右到左边往回走,但是对于链表只能从head节点往下走,所以,本次插入排序从左到右实现。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}...原创 2020-02-27 01:27:32 · 179 阅读 · 0 评论 -
Leetcode3--无重复字符的最长字串
一、暴力破解#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int process(string str) { if (str == "") return 0; vector<char>...原创 2020-02-23 17:00:12 · 157 阅读 · 0 评论 -
找到字符串中所有字母异位词--滑动窗口解法
#include<iostream>#include<vector>#include<string>using namespace std;class Solution {private: vector<int>result;public: vector<int> findAnagrams(string s, st...转载 2020-02-16 23:48:39 · 320 阅读 · 0 评论 -
hash数组找重复元素
将arr元素值移动到arr对应的下标即可:#include<iostream>#include<vector>using namespace std;class Solution {public: vector<int> findDuplicates(vector<int>& nums) { vector<i...转载 2020-02-16 23:46:48 · 435 阅读 · 0 评论 -
力扣 397 判断子序列
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例1:s ...原创 2019-09-10 11:45:06 · 212 阅读 · 0 评论 -
力扣53、最大子序列的和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。1、循环暴力方法两层循环,内循环找到以i开始的最大的子序列和,外循环找到i到n-1中以i到n-1为开始的最大子序列和。比如[-2,1,3,-1...原创 2019-09-08 14:52:39 · 334 阅读 · 0 评论 -
力扣 394 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4...转载 2019-09-08 12:15:00 · 292 阅读 · 0 评论 -
回溯实现排列和组合问题
一、排列 问题1、电话号码的数字组合(17)给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。#include<iostream>#include<vector>#include<string>#include<assert.h>usi...转载 2019-08-22 14:00:59 · 639 阅读 · 0 评论 -
回溯法解决二维平面上的问题
1、力扣:79给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word ...转载 2019-08-22 20:12:03 · 342 阅读 · 0 评论 -
递归的优化——记忆化搜索
1、斐波那契数列递归做法:class Solution {public: int fib(int n) { if(n==0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci(n-2); ...原创 2019-08-23 20:42:19 · 456 阅读 · 0 评论 -
二叉树的镜像翻转实现,对称和相同的判定
1、力扣226 镜像翻转二叉树:先交换左右子树,然后递归翻转左子树和右子树即可/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x...原创 2019-08-24 15:24:29 · 483 阅读 · 0 评论