前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
1.最长优雅子数组
题目链接: 2401. 最长优雅子数组 - 力扣(LeetCode)
题面:
代码:
java
class Solution {
public int longestNiceSubarray(int[] nums) {
int ans = 0;
for (int i = 0; i < nums.length; i++) { // 枚举子数组右端点 i
int or = 0, j = i;
while (j >= 0 && (or & nums[j]) == 0){
or |= nums[j--]; // 加到子数组中
}
ans = Math.max(ans, i - j);
}
return ans;
}
}
2.数组最后一个元素的最小值
题目链接: 3133. 数组最后一个元素的最小值 - 力扣(LeetCode)
题面:
代码:
java
class Solution {
public long minEnd(int n, int x) {
n--;
int i = 0;
int j = 0;
long ans = x;
while((n>>j)>0){
if(((ans>>i)&1)==0){
long bit = ((n>>j)&1);
ans|=(long)(bit<<(i));
j++;
}
i++;
}
return ans;
}
}
后言
上面是力扣位运算专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!