每日一题
前几天比较忙,漏做了,今天把漏做的都补上
2399. 检查相同字母间的距离
题目链接:https://leetcode.cn/problems/check-distances-between-same-letters
import java.util.Arrays;
class Solution {
public boolean checkDistances(String s, int[] distance) {
int[] num = new int[26];
Arrays.fill(num,-1);
for (int i = 0;i<s.length();i++){
int index = Integer.valueOf(s.charAt(i)) - Integer.valueOf('a');
if (num[index]==-1){
num[index] = i;
}else {
num[index] = i - num[index]-1;
}
}
for (int i =0;i< num.length;i++){
if (num[i]!=-1 && num[i] != distance[i]){
return false;
}
}
return true;
}
}
1019. 链表中的下一个更大节点
题目链接:https://leetcode.cn/problems/next-greater-node-in-linked-list
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public int[] nextLargerNodes(ListNode head) {
Stack<Integer> value = new Stack<>();
Stack<Integer> index = new Stack<>();
int n = 0;
ListNode node = head;
while (node!=null){
n++;
node = node.next;
}
int[] num = new int[n];
Arrays.fill(num,0);
int flag = 0;
node = head;
while (node!=null){
if (index.size()==0|| value.peek()>= node.val){
index.push(flag);
value.push(node.val);
}else {
while (value.size()!=0 && value.peek()< node.val){
num[index.pop()] = node.val;
value.pop();
}
index.push(flag);
value.push(node.val);
}
flag++;
node = node.next;
}
return num;
}
}
1041. 困于环中的机器人
题目链接:https://leetcode.cn/problems/robot-bounded-in-circle/
思路:如果执行instructions 4次之后机器人不在原点,那他就可以离开
题解的思路:分类:1、执行一次之后 如果还在原点,那无法离开 2、执行一次之后不再原点,如果朝北,那可以离开,其他情况 都不能离开
import java.util.Arrays;
class Solution {
public boolean isRobotBounded(String instructions) {
instructions += instructions;
instructions += instructions;
int index = 0;
int[] num = new int[4];
Arrays.fill(num,0);
for (int i = 0 ;i<instructions.length();i++){
if (instructions.charAt(i)== 'G'){
num[index]++;
}else if (instructions.charAt(i)== 'L'){
index--;
if (index<0){
index = index + 4;
}
}else if(instructions.charAt(i)== 'R'){
index++;
if (index>=4){
index = index - 4;
}
}
}
if (num[0]==num[2]&&num[1]==num[3]) return true;
return false;
}
}