2404. 出现最频繁的偶数元素

2404. 出现最频繁的偶数元素

题目

  • 给你一个整数数组 nums ,返回出现最频繁的偶数元素。如果存在多个满足条件的元素,只需要返回 最小 的一个。如果不存在这样的元素,返回 -1

思路

  • 最终返回元素条件如下:
    • 必须是偶数(num % 2 == 0)
    • 出现次数最多
    • 出现次数最多中值最小

解答代码

  • ans代表出现次数
  • resNum表示最终元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public int mostFrequentEven(int[] nums) {
int res[] = new int[100001];
int ans = -1;
int resNum = 100001;
for(int i = 0; i < nums.length; i++){
if(nums[i] % 2 == 0){
res[nums[i]]++;
if(res[nums[i]] > ans){
ans = res[nums[i]];
resNum = nums[i];
}
if(res[nums[i]] == ans){
ans = res[nums[i]];
if(nums[i] < resNum){
resNum = nums[i];
}
}
}
}
if(ans == -1){
return -1;
}
return resNum;
}

2299-强密码检验器II

2299. 强密码检验器 II

思路(Java)

首先设置一个flag数组,表示第2-5项是否满足

  1. 首先判断长度,小于8直接return false
  2. 遍历字符串,将其中第2-5个条件进行判断,只要有满足条件的那么f对应的flag[i]直接设为1,然后下次就不再需要进行此次判断(通过flag的值是否为0进行判断,如果为0,那么就继续进行判断,如果为1,那么就已存在满足条件的值,跳过即可)
  3. 最后一个条件,在遍历过程中,只要存在两个相同的连续字符,直接返回return false,节约时间

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public boolean strongPasswordCheckerII(String password) {
int len = password.length();
int[] flag = new int[4];
char[] str = password.toCharArray();
if(len < 8){
return false;
}
for(int i = 0; i < len; i++){
if(flag[0] == 0 && str[i] >= 'a' && str[i] <= 'z'){
flag[0] = 1;
}
if(flag[1] == 0 && str[i] >= 'A' && str[i] <= 'Z'){
flag[1] = 1;
}
if(flag[2] == 0 && str[i] >= '0' && str[i] <= '9'){
flag[2] = 1;
}
// 1! 2@ 3# 4$ 5% 6^ 7& 8* 9( 10) 11- 12+
if(flag[3] == 0 && (str[i] == '!' || str[i] == '@' || str[i] == '#' || str[i] == '$'
|| str[i] == '%' || str[i] == '^' || str[i] == '&' || str[i] == '*' || str[i] == '('
|| str[i] == ')' || str[i] == '-' || str[i] == '+')){
flag[3] = 1;
}
if(i+1 < len && str[i] == str[i+1]){
return false;
}
}
if(flag[0] == 1 && flag[1] == 1 && flag[2] == 1 && flag[3] == 1){
return true;
}else{
return false;
}
}

1184-公交站间的距离

1184:公交站间的距离

题目介绍

vSPL7Q.png

解题思路

  • 这是一道简单的题
  • 由于公交车只能顺时针或逆时针移动,而且所有点的移动顺序是固定的,例如从1到3的顺序就只有1,2,3或是倒着走,因为其他方式的路程无疑会更长
  • 所以只需要计算全部路程的长度和其顺序走或逆序走的路程数,然后选择较小的数值就是最短距离

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int distanceBetweenBusStops(int[] distance, int start, int destination) {
int sum = 0;
int part1 = 0;
if(start > destination){
int tmp = start;
start = destination;
destination = tmp;
}
for(int i = 0; i < distance.length; i++){
sum += distance[i];
}
for(int i = start; i < destination; i++){
part1 += distance[i];
}
if(sum - part1 < part1){
return sum-part1;
}else{
return part1;
}
}
}

简单的一题!!!

[1.jpg