【代码随想录算法训练营11期】day 6 | c++-爱代码爱编程
242. 有效的字母异位词 解题思路:用数组做哈希映射 class Solution { public: bool isAnagram(string s, string t) { if (s.size() != t.size()) return false; // 1.初始化字母“偏移”表,
代码编织梦想
242. 有效的字母异位词 解题思路:用数组做哈希映射 class Solution { public: bool isAnagram(string s, string t) { if (s.size() != t.size()) return false; // 1.初始化字母“偏移”表,
两数之和 class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int]
题目如图 代码如下 class Solution { public int[] twoSum(int[] nums, int target) { int arr[] = new int[2]; int n = nums
112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 /** * Definition for
647. 回文子串 - 力扣(Leetcode) 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。 示例 1: 输入:s = "abc" 输出:3
654.最大二叉树 又是构造二叉树,昨天大家刚刚做完中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历 构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。 注意类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下标索引直接在原数组上操作,这
一、题目描述 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。
文章目录 1.哈希表的原理2.有效的字母异位数3.两个数组的交集4. 快乐数字5. 两数之和 1.哈希表的原理 哈希一般解决的问题: 快速判断一个元素是否出现在集合里。 时间复杂度可以达到O(1) 哈希碰撞:
6319. 奇偶位数 位运算模拟 class Solution { public int[] evenOddBit(int n) { int i = 0; int[] ans =
24.两两交换链表中的节点 class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode* dummyHead = new ListNode(0);//设置虚拟节点 dummyHead->next = head; ListNode*
239. 滑动窗口最大值 347.前 K 个高频元素 239. 滑动窗口最大值1.思路2.代码实现 347.前 K 个高频元素1.思路2.代码实现 239. 滑动窗口最大值 题目 文字 视频 1.思
20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 20. 有效的括号1.思路2.代码实现 1047. 删除字符串中的所有相邻重复项1.思路2.代码实现 150. 逆波兰
232.用栈实现队列 225. 用队列实现栈 232.用栈实现队列1.思路2.代码实现 225. 用队列实现栈1.思路2.代码实现 232.用栈实现队列 题目 文字 视频 1.思路 在pus
第 100 场双周赛 这场偏简单,前面有点思维。 赛时源代码,没任何优化。 Q1 思维 当时刚洗完澡,还蒙的。写了半天判断,越来越乱,后来干脆就暴力了。暴力还wa2. class Solution { pub
24. 两两交换链表中的节点 解题思路: 定义虚拟头结点辅助节点交换,如下图所示: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), ne
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素 示例 1: 输入:nums = [3,2,2,3], val = 3 输出:2, nums
题目如图 代码如下 class Solution { public boolean isPalindrome(int x) { int opnum = 0; int temp = x; if(x <
题目: 分析: 首先只考虑 a的前缀 + b的后缀 构成回文串的情况(反过来的解决思路完全相同),采用双指针的思想,左指针从a的左边开始遍历,右指针从b的右边开始遍历,如果要构成回文串,则 a的头部 和 b的尾部一定会存在
110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树 每个节点 的左右两个子树的高度差的绝对值不超过 1 。 因为求深度可以从上到下去查 所以需要前序遍历(中左右),而高度只能从下到上去查,所以只能后序遍历(左右中)
题目 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 Input: preorder = [3,9,20,15,7], ino