链表中的节点每k个一组翻转
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode reverseKGroup (ListNode head, int k) {
// write code here
ListNode tail = head;
for(int i= 0;i<k;i++){
if(tail == null){
return head;
}
tail = tail.next;
}
ListNode pre = null;
ListNode cur = head;
while(cur != tail){
//头插法
ListNode tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
head.next = reverseKGroup(tail,k);
return pre;
}
}
二维数组中的查找
这个题的重点就是二维数组的长度怎么来看,方便循环遍历查找。
举个例子
//给定一个数组
int[][] arr = new int[2][3];
//计算行的长度:2
int length1 = arr.length;
//计算列的长度:3
int length2 = arr[0].length;
那么来看题解吧.
public class Solution {
public boolean Find(int target, int [][] array) {
int flag = 0;
for(int i = 0;i<array.length;i++){
for(int j =0;j<array[0].length;j++){
if(array[i][j]==target){
flag = 1;
}
}
}
if(flag==1){
return true;
}else{
return false;
}
}
}
寻找峰值
这道题就是二分法找数组中最大元素的下标,当数组中只有一个元素的时候,返回0,其他情况返回下标right
看代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int findPeakElement (int[] nums) {
// write code here
if (nums.length == 1) return 0;
int left = 0, right = nums.length - 1;
while (left < right) {
int mid = (left + right) / 2;
//右边是往下,不一定有坡峰
if (nums[mid] > nums[mid + 1]) {
right = mid;
//右边是往上,一定能找到波峰
} else {
left = mid + 1;
}
}
return right;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119514.html