leetcode
hh
blue_mmxx
这个作者很懒,什么都没留下…
展开
-
找到小镇的法官
题目在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。 每个人(除了小镇法官外)都信任小镇的法官。 只有一个人同时满足属性 1 和属性 2 。 给定数组trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b 的人。如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的标记。否则,返回 -1。对于这个题目我最初的想法是,这可以使用并查集来解决,可是原创 2021-04-10 17:35:39 · 164 阅读 · 0 评论 -
next_permutation()以及swap()的用法
class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>>ans; do{ ans.emplace_back(nums); }while(next_permutation(nums.begin(),nums.end()));原创 2021-04-08 19:44:04 · 102 阅读 · 0 评论 -
不同路径II空间压缩方法动态规划
题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?//采用空间压缩,将二维表压缩成为一维的只记录左边的,上面的自然保存class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>原创 2021-04-06 10:06:26 · 129 阅读 · 0 评论 -
最长回文子串
基础刷的差不多了,开始进行dynamic programming了题目给你一个字符串 s,找到 s 中最长的回文子串应该是动态规划的经典题型吧对于一个字符串需要得到他的最长回文子串,我们首先想到的是每一个元素都是一个回文串,其次再是两个元素,三个元素的思考。这种思维很符合我们常规想法,在这里可以称之为中心扩展法。但是我们这里要求使用动态规划来解决。但其实我们发现他们有共同之处,我们要知道一个字符串是否是回文字符串,我们需要知道他的两边是不是相同的,然后在判断它里面的元素是否又是一个回文字符串。这原创 2021-04-05 18:40:22 · 65 阅读 · 0 评论 -
计算力扣银行的钱
题目class Solution {public: int totalMoney(int n) { int week,offset; int total=0; for(int i=0;i<n;i++){ week=i/7; offset=i%7+1; total+=week+offset; } return total;原创 2021-04-02 19:50:40 · 149 阅读 · 0 评论 -
两两交换链表中的节点
题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr原创 2021-04-01 10:40:53 · 57 阅读 · 0 评论 -
验证二叉搜索树
题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0原创 2021-04-01 08:46:42 · 56 阅读 · 0 评论 -
二叉搜索树的最小距离
题目给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。学习:int ans=INT_MAX;以及使用min 代替ans=ans<abs(root->val-prev)? ans:abs(root->val-prev);其余的就和普通中序遍历一样,没有任何技术含量class Solution {public: void dfs(TreeNode* root, int& pre, int& ans) { if (roo原创 2021-03-31 17:00:58 · 66 阅读 · 0 评论 -
汉诺塔问题
汉诺塔问题在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。你需要原地修改栈。示例1:输入:A = [2, 1, 0], B = [], C = []输出:C = [2,原创 2021-03-29 20:39:53 · 225 阅读 · 0 评论 -
汉明距离
每天复习java一点点两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0class Solution {public: int hammingDistance(int x, int y) { int result=x^y; int ans=0原创 2021-03-18 21:58:11 · 200 阅读 · 0 评论