回文串的定义 两种回文串:奇数:字母的出现频次偶数:字母的出现频次 题目 思路 哈希记录每个字符的个数,统计偶数的和奇数的字符,偶数的字符个数加1则为当前最大的回文串。 代码: class Solution { public: int longestPalindrome(string s) { in Read More
posted @ 2021-09-26 16:42 A-inspire Views(66) Comments(0) Diggs(0)
快速排序 #include <stdio.h> int a[101], n;//定义全局变量,这两个变量需要在子函数中使用 void quicksort(int left, int right) { int i, j, t, temp; if (left > right) return; temp Read More
posted @ 2021-09-26 16:40 A-inspire Views(98) Comments(0) Diggs(0)
思路 遍历字符串,同时在前后字符串不同时停止计数, class Solution(object): def compressString(self, S): """ :type S: str :rtype: str """ if not S: return '' res = [] count = 1 Read More
posted @ 2021-09-26 16:38 A-inspire Views(63) Comments(0) Diggs(0)
题目 思路: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: result = [] if not matrix: return [] up = 0 down = len(matrix) - 1 Read More
posted @ 2021-09-26 16:37 A-inspire Views(31) Comments(0) Diggs(0)
思路 题目可以划分为多个重叠子问题,爬到N阶梯的方法数量,等于两个部分之和:1.爬上N-1阶梯的方法数量,因为再爬一阶就能达到第N阶2.爬上N-2阶梯的方法数量,因为再爬二阶梯就能达到第N阶 因此得公式:dp[n] = dp[n-1]+dp[n-2]同时需要初始化dp[0] = 1和dp[1] = Read More
posted @ 2021-09-26 16:35 A-inspire Views(29) Comments(0) Diggs(0)
思路 代码: class Solution { public: int longestCommonSubsequence(string text1, string text2) { if(text1.size()==0||text2.size()==0) { return 0; } int dp[t Read More
posted @ 2021-09-26 16:33 A-inspire Views(50) Comments(0) Diggs(0)
思路 明确dp[i][j]数组的意义:前i种,总金额为j的组合数状态转移方程:第i种选或不选共两种,dp[i][j] = dp[i-1][j]+dp[i][j-coins[i-1]],但要保证j-coins[i-1]大于等于0,否则为dp[i][j] = dp[i-1][j]。边界条件:dp[0][ Read More
posted @ 2021-09-26 16:32 A-inspire Views(56) Comments(0) Diggs(0)
思路 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class S Read More
posted @ 2021-09-26 16:30 A-inspire Views(59) Comments(0) Diggs(0)
思路 定义一个新的节点,交换左右子树,递归左右子树。 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), righ Read More
posted @ 2021-09-26 16:29 A-inspire Views(341) Comments(0) Diggs(0)
代码: /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList( Read More
posted @ 2021-09-26 16:27 A-inspire Views(44) Comments(0) Diggs(0)
代码: # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None clas Read More
posted @ 2021-09-26 16:27 A-inspire Views(32) Comments(0) Diggs(0)
思路 动归 贪心 class Solution { public: int cutRope(int number) { if (number < 2) { return 0; } if (number == 2) { return 1; } if(number == 3) { return 2; } Read More
posted @ 2021-09-26 16:25 A-inspire Views(54) Comments(0) Diggs(0)
思路 假设:若b>a,且存在,a + b = s;(a - m ) + (b + m) = s则:(a - m )(b + m)=ab - (b-a)m - m*m < ab;说明外层的乘积更小也就是说依然是左右夹逼法!!!只需要2个指针1.left开头,right指向结尾2.如果和小于sum,说明 Read More
posted @ 2021-09-26 16:24 A-inspire Views(39) Comments(0) Diggs(0)
思路 两次循环,第一次循环是快慢指针,若链表不是环形,则快指针先到表尾NULL,若是环形,快慢指针会相遇。相遇后将快慢指针之一置到表头head,然后开始第二次循环,此时快慢指针同速移动。当快慢指针再次相遇时到达链表开始入环的第一个节点。 代码 /** * Definition for singly- Read More
posted @ 2021-09-26 16:22 A-inspire Views(30) Comments(0) Diggs(0)
思路 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ cla Read More
posted @ 2021-09-26 16:21 A-inspire Views(22) Comments(0) Diggs(0)
思路 想象一下,两名运动员以不同的速度在环形赛道上跑步会发生什么? 算法 通过使用具有 不同速度 的快、慢两个指针遍历链表,空间复杂度可以被降低至 O(1)O(1)。慢指针每次移动一步,而快指针每次移动两步。 如果列表中不存在环,最终快指针将会最先到达尾部,此时我们可以返回 false。 现在考虑一 Read More
posted @ 2021-09-26 16:19 A-inspire Views(37) Comments(0) Diggs(0)
思路 桶排序 将数组排序,放入各个对应的桶中,把各个空桶输出出来 代码: class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { sort(nums.begin(),nums.end()); v Read More
posted @ 2021-09-26 16:18 A-inspire Views(26) Comments(0) Diggs(0)
思路 反向中序遍历二叉树,将结果进行累加。 代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int Read More
posted @ 2021-09-26 16:17 A-inspire Views(35) Comments(0) Diggs(0)
代码: class Solution { int n,res = 0; public: void help(string&s,int left,int right) { while(left>=0&&right<n) { if(s[left--]==s[right++]) { ++res; } el Read More
posted @ 2021-09-26 16:16 A-inspire Views(25) Comments(0) Diggs(0)
思路 在原始信息和哈希映射使用的实际键值之间建立映射关系,先将单词字母按照字母表的顺序进行排列,若排列的结果相同,则为字母异位词 代码 class Solution { public: vector<vector<string>> groupAnagrams(vector<string>& strs Read More
posted @ 2021-09-26 16:15 A-inspire Views(25) Comments(0) Diggs(0)
代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL Read More
posted @ 2021-09-26 16:13 A-inspire Views(22) Comments(0) Diggs(0)
思路 思路: 遍历矩阵,第一行上面:前后相加。第一列上面:上下相加。中间:比较上下后加上当前值。 代码 class Solution { public: int minPathSum(vector<vector<int>>& grid) { for(int i = 0;i<grid.size();i Read More
posted @ 2021-09-26 16:09 A-inspire Views(26) Comments(0) Diggs(0)
思路 1 通过数组下标进行计算 先沿着竖直方向中心线翻转+再沿着主对角线翻转 代码: class Solution { public: void rotate(vector<vector<int>>& matrix) { int len = matrix.size(); //先进行行以中间线进行翻转 Read More
posted @ 2021-09-26 16:07 A-inspire Views(32) Comments(0) Diggs(0)
思路 乘积 = 当前数左边的乘积 * 当前数右边的乘积 代码 class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { vector<int>result(nums.size(),0); int k = 1 Read More
posted @ 2021-09-26 16:05 A-inspire Views(22) Comments(0) Diggs(0)
思路 1、判断左子树是否为空,若为空则直接往右走,若不为空则22、将当前节点root的右子树接到当前root节点的左孩子节点的最右下边的孩子节点3、将当前节点root的左子树接到右子树上,并将左节点置为NULL。 /** * Definition for a binary tree node. * Read More
posted @ 2021-09-26 16:04 A-inspire Views(33) Comments(0) Diggs(0)
思路 代码: class Solution { public: vector<int> countBits(int num) { vector<int>result(num+1); result[0] = 0; for(int i =1;i<=num;i++) { if(i%2 == 0){ res Read More
posted @ 2021-09-26 16:03 A-inspire Views(29) Comments(0) Diggs(0)
思路: 先对数组进行排序,然后遍历寻找连续序列并计数,注意相等的情况 代码 class Solution { public: int longestConsecutive(vector<int>& nums) { if(nums.empty()) return 0; sort(nums.begin( Read More
posted @ 2021-09-26 16:00 A-inspire Views(25) Comments(0) Diggs(0)
思路:回溯 递归 代码 class Solution { public: void back_track_Dfs(vector<string>&res,string path,int n,int lc,int rc) { if(rc>lc||rc>n||lc>n)//不满足条件 { return; Read More
posted @ 2021-09-26 15:59 A-inspire Views(39) Comments(0) Diggs(0)
# 思路深度优先遍历遍历整个数组,遇到1,ans++,ans是记录岛的个数的运行一下dfs函数,把这个岛所有陆地给我沉喽,这个岛全部的1变成0等把grid全遍历完,grid就全是0了,再把ans输出,这个ans就是我们记录的岛的个数注意:grid竟然是char类型的,所有1和0都要加单引号哦 代码 Read More
posted @ 2021-09-26 15:57 A-inspire Views(49) Comments(0) Diggs(0)
思路 动态规划 斐波拉契呀数列 代码 class Solution { public: int climbStairs(int n) { vector<int>res_dp(n+5,0); res_dp[1] = 1; res_dp[2] = 2; for(int i = 3;i<=n;i++) { Read More
posted @ 2021-09-26 15:56 A-inspire Views(23) Comments(0) Diggs(0)
思路 深度优先遍历:回溯,递归(终止条件:选择的当前数字数量等于原始数组的大小) 状态变量1.递归到第几层,depth2.已经选择了哪些数Path3.布尔数组 used非叶子节点选择分枝 代码: class Solution { public: void backtrack(vector<vecto Read More
posted @ 2021-09-26 15:55 A-inspire Views(26) Comments(0) Diggs(0)
方法1:递归思路 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left Read More
posted @ 2021-09-26 15:53 A-inspire Views(30) Comments(0) Diggs(0)
方法1 递归解法: 左右根 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val( Read More
posted @ 2021-09-26 15:50 A-inspire Views(47) Comments(0) Diggs(0)
前序遍历迭代算法: 二叉树的前序遍历二叉树的遍历,整体上看都是好理解的。三种遍历的迭代写法中,数前序遍历最容易理解。递归思路:先树根,然后左子树,然后右子树。每棵子树递归。 代码: /** * Definition for a binary tree node. * struct TreeNode Read More
posted @ 2021-09-26 15:49 A-inspire Views(52) Comments(0) Diggs(0)
方法一:内置位计数功能 思路 大多数编程语言中,都存在各种内置计算等于 1 的位数函数。如果这是一个项目中的问题,应该直接使用内置函数,而不是重复造轮子。但这是一个力扣问题,有人会认为使用内置函数就好像使用 使用 LinkedList 实现 LinkedList。对此,我们完全赞同。因此后面会有手工 Read More
posted @ 2021-09-26 15:47 A-inspire Views(37) Comments(0) Diggs(0)
相关概念 先序遍历:根节点,左节点,右节点中序遍历:左节点,根节点,右节点 所以构建二叉树的问题本质上就是: 找到各个子树的根节点 root构建该根节点的左子树构建该根节点的右子树 递归思路: 代码: # Definition for a binary tree node. # class Tree Read More
posted @ 2021-09-26 15:43 A-inspire Views(38) Comments(0) Diggs(0)
思路1 卡塔兰数 代码 class Solution { public: int numTrees(int n) { long C = 1; for (int i = 0;i<n;++i) { C = C*2*(2*i+1)/(i+2); } return int(C); } }; Read More
posted @ 2021-09-26 15:41 A-inspire Views(27) Comments(0) Diggs(0)
思路: l1 或 l2若有一者为空则返回非空链表若都非空,则判断 l1 和 l2 的val,val小的将其 next 递归添加到结果的节点递归终止条件:l1 或 l2 有一为空 代码: /** * Definition for singly-linked list. * struct ListNod Read More
posted @ 2021-09-26 15:39 A-inspire Views(28) Comments(0) Diggs(0)
思路:递归求解某一棵树的左右节点,返回 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : v Read More
posted @ 2021-09-26 15:37 A-inspire Views(24) Comments(0) Diggs(0)
思路 递归 用一个函数辅助判断左右子树是否完全对称,对根节点进行输入递归判断结果。 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # sel Read More
posted @ 2021-09-26 15:36 A-inspire Views(32) Comments(0) Diggs(0)
#思路 # 思路:定义一个当前节点,赋值为head,定义一个pre作为反转后的第一个节点,定义一个临时node 存放当前节点的下一个节点 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNod Read More
posted @ 2021-09-26 15:33 A-inspire Views(32) Comments(0) Diggs(0)
思路:递归得到左右子树,交换左右子树,返回根节点 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x Read More
posted @ 2021-09-26 15:26 A-inspire Views(31) Comments(0) Diggs(0)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), r Read More
posted @ 2021-09-26 15:25 A-inspire Views(30) Comments(0) Diggs(0)
股票问题的方法就是 动态规划,因为它包含了重叠子问题,即买卖股票的最佳时机是由之前买或不买的状态决定的,而之前买或不买又由更早的状态决定的... 思路(官方题解方法二:一次遍历) 遍历一遍数组,计算每次 到当天为止 的最小股票价格和最大利润。定义一个变量保存最大利润,同时定义一个变量保存最小的股票价 Read More
posted @ 2021-09-26 15:24 A-inspire Views(24) Comments(0) Diggs(0)
思路1 1.暴力解法,两重循环,从某一个下标开始,计算连续的和,求最大 代码 class Solution { public: int maxSubArray(vector<int> &nums) { //类似寻找最大最小值的题目,初始值一定要定义成理论上的最小最大值 int max = INT_M Read More
posted @ 2021-09-26 15:22 A-inspire Views(32) Comments(0) Diggs(0)
代码: class Solution { public: vector<int> dailyTemperatures(vector<int>& T) { int length = int(T.size()); vector<int>result(length,0); //需要指定长度 stack<i Read More
posted @ 2021-09-26 15:16 A-inspire Views(30) Comments(0) Diggs(0)