5915. 找出临界点之间的最小和最大距离
程序员文章站
2024-03-15 11:04:41
...
题目链接:力扣
思路:用三个指针标记三个位置,从前往后找满足条件的小标,放在数组里面,最大距离好找,就是数组中最后一个和第一个的差,最小距离就是数组中相邻的两个值的差的最小值(最下距离,在循环的时候判断一下即可,这是一个坑点)~~
上代码:
/**
* Example:
* var li = ListNode(5)
* var v = li.`val`
* Definition for singly-linked list.
* class ListNode(var `val`: Int) {
* var next: ListNode? = null
* }
*/
class Solution {
fun nodesBetweenCriticalPoints(head: ListNode?): IntArray {
val arrayIndex = ArrayList<Int>()
var front = head
var behind = head?.next
var index = 1
var minn = 1000000
while (behind?.next != null) {
val p = behind.next
if (front?.`val`!! < behind.`val` && behind.`val` > p?.`val`!!
|| front.`val` > behind.`val` && behind.`val` < p?.`val`!!) {
arrayIndex.add(index)
if (arrayIndex.size > 1) {
minn = minn.coerceAtMost(arrayIndex[arrayIndex.size - 1] - arrayIndex[arrayIndex.size - 2])
}
}
front = behind
behind = p
index++
}
if (arrayIndex.size > 1) {
return intArrayOf(minn, arrayIndex[arrayIndex.size - 1] - arrayIndex[0])
}
return intArrayOf(-1, -1)
}
}
上一篇: 满足条件后定位元素到页面最顶部
下一篇: Java web 项目之间的相互调用
推荐阅读
-
5915. 找出临界点之间的最小和最大距离
-
设计一个算法:用不多于3n/2的平均比较次数,在数组A[1,...,n]中找出最大值和最小值的元素
-
给出n个数,找出这n个数的最大值,最小值,和。
-
c语言:用户输入10个整数,程序找出其中的最大值和最小值
-
Python-同时寻找出数组中的最大值和最小值
-
Java_冒泡排序|获取数组最大值和最小值操作,编写函数得到0到n之间的随机数,并找出产生m个这样的随机数中最大的、最小的数,并统计其中>=60的有多少个
-
c语言:用户输入10个整数,程序找出其中的最大值和最小值
-
设在变量BUF为起始地址的字节存储单元中存放了5个有符号字节数,编写源程序找出其中最大和最小的数存放于MAX和MIN两个字节单元中。