
class Solution {
public boolean isMonotonic(int[] A) {
int len = A.length;
int countIncrease = 0, countDecrease = 0;
for (int i = 0; i < len - 1; i++) {
if (A[i] <= A[i + 1])
countIncrease++;
if (A[i] >= A[i + 1])
countDecrease++;
}
return countIncrease == len - 1 || countDecrease == len - 1;
}
}
在这里插入图片描述
思路1:找出链表长度,遍历两次
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int kthToLast(ListNode head, int k) {
int len = length(head);
for(int i=0; i<len; i++){
if(i == len-k){
return head.val;
}
head = head.next;
}
return 0;
}
public int length(ListNode head){
int len = 0;
while(head!=null){
len++;
head = head.next;
}
return len;
}
}
思路2:利用双指针,控制两个指针之间的距离为k,当快指针结束的时候,慢指针即为所求
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int kthToLast(ListNode head, int k) {
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;
ListNode p = dummyHead;
ListNode q = dummyHead;
for (int i = 0; i < k; i++) {
q = q.next;
}
while (q!=null) {
q = q.next;
p = p.next;
}
return p.val;
}
}
本文介绍了两个关于链表的Java解决方案:一是检查链表元素是否单调递增或递减,二是找到链表中第k个节点。第一个方法通过计数相邻节点的大小关系实现,第二个方法使用双指针技巧来定位特定节点。
1678

被折叠的 条评论
为什么被折叠?



