博客主页 📖
文章

Count:

计 48 篇
359
wy的leetcode刷题记录_Day62——二叉树结束
wy的leetcode刷题记录_Day62——二叉树结束
分类: Code
简介:wy的leetcode刷题记录_Day62声明本文章的所有题目信息都来源于leetcode如有侵权请联系我删掉!时间:2022 12 27前言@TOC1750. 删除字符串两端相同字符后的最短长度今天的每日一题是:1750. 删除字符串两端相同字符后的最短长度题目介绍给你一个只包含字符 'a','b' 和 'c' 的字符串 s ,你可以执行下面这个操作(5 个步骤)任意次:选择字符串 s 一个 非空 的前缀,这个前缀的所有字符都相同。选择字符串 s 一个 非空 的后缀,这个后缀的所有字符都相同。前缀和后缀在字符串中任意位置都不能有交集。前缀和后缀包含的所有字符都要相同。同时删除前缀和后缀。请你返回对字符串 s 执行上面操作任意次以后(可能 0 次),能得到的 最短长度 。示例 1: 输入:s = "ca" 输出:2 解释:你没法删除任何一个字符,所以字符串长度仍然保持不变。示例 2: 输入:s = "cabaabac" 输出:0 解释:最优操作序列为:选择前缀 "c" 和后缀 "c" 并删除它们,得到 s = "abaaba" 。选择前缀 "a" 和后缀 "a" 并删除它们,得到 s = "baab" 。选择前缀 "b" 和后缀 "b" 并删除它们,得到 s = "aa" 。选择前缀 "a" 和后缀 "a" 并删除它们,得到 s = "" 。思路简单模拟法:采用双指针,分别从字符串的头部和尾部开始遍历,对于每一次迭代我们的目标就是消除当前迭代的前缀和后缀,于是每一个迭代我们执行:从当前头部指针i寻找需要判别的字符判断头指针和尾指针字符是否相等,若相等继续,否则直接返回当前长度寻找前后缀及长度在寻找后缀时需要判断是否前后缀有重复的字符最后当我们的头指针或者尾指针不相等亦或者字符串遍历完比时,我们返回原字符串长度 执行操作的字符串长度即为答案。代码class Solution { public: int minimumLength(string s) { int n=s.size(); int i=0; int j=n 1; int ans=0; while(i<j) { if(s[i]!=s[j]) break; char Compare=s[i]; //找前缀 while(Compare==s[i]) { // if(i<j) // break; i++; ans++; } //找后缀 while(Compare==s[j]) { if(i>=j) break; j ; ans++; } } return n ans; } };收获简单的模拟题108. 将有序数组转换为二叉搜索树108. 将有序数组转换为二叉搜索树题目介绍给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [ 10, 3,0,5,9] 输出:[0, 3,9, 10,null,5]解释:[0, 10,5,null, 3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3] 输出:[3,1]解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。思路很正常的将有序数组的中间作为当前迭代的根节点左区间为左子树,右区间为右子树。代码class Solution { private: TreeNode* traversal(vector<int>& nums, int left, int right) { if (left > right) return nullptr; int mid = left + ((right left) / 2); TreeNode* root = new TreeNode(nums[mid]); root >left = traversal(nums, left, mid 1); root >right = traversal(nums, mid + 1, right); return root; } public: TreeNode* sortedArrayToBST(vector<int>& nums) { TreeNode* root = traversal(nums, 0, nums.size() 1); return root; } };收获二叉树刷的时间段有点长中间忘了很多期待二刷
408
六月第二周计划(6.5-6.11)
六月第二周计划(6.5-6.11)
分类: 计划
简介:前言okk恶补上周计划(不愧是我奥)理想计划: 6.5 复习图 6.6 高数第七章结束 6.7 高数练习题 6.8 计组第一章 6.9 计组第二章 6.10 计组第三章 6.11 高数第八章数据结构学完(七八章)(超额任务)英语单词 学200 复习300。实际计划(其实是俩周计划了) 6.5 复习数据结构图 6.6 数据结构第七章查询 前两节(概念、折半查找) 计组第一章 6.7 计组第二章前两节 6.8 计组第二章剩余(那个乘法属实折磨) 数据结构第七章第三节 6.9 数据结构第七章剩余(难的主要是后面几个查询) 6.10 数据结构第八章前俩节 6.11 玩下一周 6.12 复习数据结构查询 6.13 数据结构第八章排序 第三四节(开始折磨奥) 6.14 数据结构第八章排序 剩余 (搞忘了剩余学了多久 反正巨折磨 那个外部排序真ex啊) 6.15 计组第三章 前三节 6.16 计组第三章 第四节 6.17 数据结构结束(这个是摆的) 6.18 计组第三章 第五节总结这里偷懒了好几天没更新,大部分的任务完成时间记不太住 但是完成度还是有的,主打的就是实训学习效率超高!
400
wy的leetcode刷题记录_Day67
wy的leetcode刷题记录_Day67
分类: Code
简介:wy的leetcode刷题记录_Day67声明本文章的所有题目信息都来源于leetcode如有侵权请联系我删掉!时间:2023 6 1前言@TOC1019. 链表中的下一个更大节点222. 完全二叉树的节点个数题目介绍给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例 1:输入:root = [1,2,3,4,5,6] 输出:6 示例 2:输入:root = [] 输出:0 示例 3:输入:root = [1] 输出:1思路1.无脑DFS(未利用完全二叉树的性质)2.二分查找+位运算(为完全利用完全二叉树的性质)3.利用完全二叉树的性质,完全二叉树的子树中如果不是满二叉树必定只有一个非满二叉树代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) * TreeNode(int x) : val(x), left(nullptr), right(nullptr) * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) * }; */ class Solution { public: int ans=0; int countNodes(TreeNode* root) { dfs(root); return ans; } void dfs(TreeNode *node) { if(node ==nullptr) return ; ans++; dfs(node >left); dfs(node >right); } };class Solution { public: int countNodes(TreeNode* root) { if (root == nullptr) { return 0; } int level = 0; TreeNode* node = root; while (node >left != nullptr) { level++; node = node >left; } int low = 1 << level, high = (1 << (level + 1)) 1; while (low < high) { int mid = (high low + 1) / 2 + low; if (exists(root, level, mid)) { low = mid; } else { high = mid 1; } } return low; } bool exists(TreeNode* root, int level, int k) { int bits = 1 << (level 1); TreeNode* node = root; while (node != nullptr && bits > 0) { if (!(bits & k)) { node = node >left; } else { node = node >right; } bits >>= 1; } return node != nullptr; } }; /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) * TreeNode(int x) : val(x), left(nullptr), right(nullptr) * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) * }; */ class Solution { public: int ans=0; int countNodes(TreeNode* root) { if(root==nullptr) return 0; int l_depth=0; int r_depth=0; TreeNode* node=root; while(node >left!= nullptr) { node=node >left; l_depth++; } node=root; while(node >right) { node=node >right; r_depth++; } if(l_depth==r_depth) return pow(2,(l_depth+1)) 1; else return countNodes(root >left)+countNodes(root >right)+1; } }; 收获简单的模拟题
400
武汉 武汉 武汉 武汉
武汉
银河护卫队3
2023-05-28
银河护卫队3
詹姆斯·古恩
8.0
银河护卫队3
影片:银河护卫队3
评分:
8.0
简介:《银河护卫队 3》带来了漫威电影宇宙中十分难得的东西:一个令人满意的三部曲结局。虽然这个系列八成还会以某种形式延续下去,但编剧兼导演詹姆斯·古恩使用和前两部一脉相承的幽默与真情实意,为这支银河护卫队的故事收了尾,不过这一次,他还通过火箭悲惨的起源故事为这部电影加入了出人意料的黑暗,让这个有些凌乱但整体而言值得喜爱的第三部电影,成为了一部情感非常丰富的漫画改编电影。
博客主页 wyのblog-我的美好生活记录 I know you are here. 百度统计
鄂ICP备2023003777号-1 本站已运行 1 年 141 天 22 小时 53 分 自豪地使用 Typecho 建站,并搭配 MyDiary 主题 Copyright © 2023 ~ 2025. wyのblog-我的美好生活记录 All rights reserved.
打赏图
打赏博主
欢迎
搜 索
足 迹
分 类
  • 默认分类
  • Code
  • 日记
  • 音乐
  • 游戏
  • 阅读
  • 计划
  • 图片
  • 旅游
  • 影视
  • 文章阅读