题目描述给你一个由正整数组成的数组nums。如果 nums的子数组中位于不同位置的每对元素按位与(AND)运算的结果等于0,则称该子数组为优雅子数组。返回最长的优雅子数组的长度。子数组是数组中的一个连续部分。注意:长度为1的子数组始终视作优雅子数组。 示例1:输入:nums=[1,3,8,48,10]输出:3解释:最长的优雅子数组是[3,8,48]。子数组满足题目条件:3AND8=03AND48=08AND48=0可以证明不存在更长的优雅子数组,所以返回3。示例2:输入:nums=[3,1,5,11,13]输出:1解释:最长的优雅子数组长度为1,任何长度为1的子数组都满足题目条件。 提示:15
❓485.最大连续1的个数难度:简单给定一个二进制数组nums,计算其中最大连续1的个数。示例1:输入:nums=[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续1,所以最大连续1的个数是3.示例2:输入:nums=[1,0,1,1,0,1]输出:2提示:11nums.length105nums[i]不是0就是1.💡思路:直接遍历就行!🍁代码:(Java、C++)JavaclassSolution{publicintfindMaxConsecutiveOnes(int[]nums){intans=Integer.MIN_VALUE;intcur=0;for(intnum:
T1:LeetCode2465.不同的平均值数目 第一题比较简单,排个序后开个哈希表存总和就行classSolution{public:intdistinctAverages(vector&nums){unordered_sethash;sort(nums.begin(),nums.end());for(inti=0,j=nums.size()-1;iT2:LeetCode2466.统计构造好字符串的方案数 简单dp问题就表示长度为的字符串有多少个,我们可以将分为两类:一类是以one个1结尾,那我们就只要统计另一类是以zero个0结尾,同理我们就只要统计所以最后classSolution{pu
650.只有两个键的键盘(中等)思路不同于以往通过加减实现的动态规划,这里需要乘除法计算位置。因为粘贴操作是倍数增加,使一个一维数组dp,其中位置i表示延展到长度i的最少操作次数。对于每个位置j,如果j可以被i整除,那么长度i就可以由长度j得到,其操作次数等价于把一个长度为1的A延展到长度为i/j,因此递推公式为:dp[i]=dp[j]+dp[i/j];。比如i=10,可以在i=5的时候,选择复制全部字符并粘贴,就扩展为10个A。代码classSolution{public:intminSteps(intn){vectorint>dp(n+1,0);for(inti=2;in;++i){dp[
一个公司准备组织一场会议,邀请名单上有 n 位员工。公司准备了一张圆形 的桌子,可以坐下任意数目 的员工。员工编号为0 到n-1 。每位员工都有一位喜欢 的员工,每位员工 当且仅当 他被安排在喜欢员工的旁边,他才会参加会议。每位员工喜欢的员工不会 是他自己。给你一个下标从0 开始的整数数组 favorite ,其中 favorite[i] 表示第 i 位员工喜欢的员工。请你返回参加会议的 最多员工数目 。示例1: 输入:favorite=[2,2,1,2]输出:3解释:上图展示了公司邀请员工0,1和2参加会议以及他们在圆桌上的座位。没办法邀请所有员工参与会议,因为员工2没办法同时坐在0,1和3
学算法,刷力扣,加油卷,进大厂!题目描述力扣题目链接给你一个字符串s,颠倒字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例1:输入:s="theskyisblue"输出:"blueisskythe"示例2:输入:s="helloworld"输出:"worldhello"解释:颠倒后的字符串中不能存在前导空格和尾随空格。示例3:输入:s="agoode
学算法,刷力扣,加油卷,进大厂!题目描述力扣题目链接给你一个字符串s,颠倒字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例1:输入:s="theskyisblue"输出:"blueisskythe"示例2:输入:s="helloworld"输出:"worldhello"解释:颠倒后的字符串中不能存在前导空格和尾随空格。示例3:输入:s="agoode
微软企业题库,持续更新~~~加油!😄今天是2022年12月30号,我开始了LeetCode的《微软企业题库》专题刷题!😄开了力扣plus会员了,可以看到各企业的出题情况和题目的出现频率,所以打算把各企业的出题指数第一页(也就是top50题刷一遍),当然肯定有些题也是刷过的,那就当二刷。加油!🚀进度:已完成第一页(50题)。⭐微软(英文名称:Microsoft;中文名称:微软公司或美国微软公司)始建于1975年,是一家美国跨国科技公司,也是世界PC(PersonalComputer,个人计算机)软件开发的先导,由比尔·盖茨与保罗·艾伦创办于1975年,公司总部设立在华盛顿州的雷德蒙德(Redmo
🚀算法题🚀🌲算法刷题专栏|面试必备算法|面试高频算法🍀🌲越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨🌲作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎🌲恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻🌲人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯🚀算法题🚀🍔目录🚩题目链接⛲题目描述🌟求解思路&实现代码&运行结果⚡暴力法🥦求解思路🥦实现代码🥦运行结果⚡记忆化搜索🥦求解思路🥦实现代码🥦运行结果⚡动态规划🥦求解思路🥦实现代码🥦运行结果💬共勉🚩题目链接72
1、动态规划法我们可以使用动态规划法来解决本问题。我们利用数组dp[i]dp[i]dp[i]来记录字符串前iii位能够组成的解码方法总数。在设计状态转移方程时,我们需要注意这样子的特殊情况:1、当s[i]s[i]s[i]不为0时,单独一个s[i]s[i]s[i]肯定能够被解码,故此时dp[i]+=dp[i−1]dp[i]+=dp[i-1]dp[i]+=dp[i−1],表示前i−1i-1i−1位的解码方法可以被继承;2、当s[i−1]s[i-1]s[i−1]不为0,且s[i]s[i]s[i]和s[i−1]s[i-1]s[i−1]构成的数字可以被解码时,当前位置还可以继承前i−2i-2i−2位的解