数值的整数次方
public class Solution {
public double Power(double base, int exponent) {
//如果次方为负数就是分之一的乘法
if (exponent < 0) {
base = 1 / base;
exponent = - exponent;
}
double x = base;
double ret = 1.0;
//把expo 看成二进制来进行判断
while (exponent >= 1) {
if ((exponent & 1) == 1) {
ret *= x;
}
x *= x;
exponent >>= 1;
}
return ret;
}
}
JZ6 旋转数组的最小数字
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] arr) {
int right = arr.length - 1;
int left = 0;
while (left < right) {
int mid = left + (right - left) / 2;
if (arr[mid] < arr[right]) {
right = mid;
} else if (arr[mid] > arr[right]) {
left = mid + 1;
} else {
right -= 1;
}
}
return arr[left];
}
}
调整数组顺序使奇数位于偶数前面
使用类似于快速排序的方法
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] reOrderArray (int[] array) {
//使用两个数组辅助
// 或者当遇到奇数的时候就先将当前数组保存下来之后从奇数位的前一位向后移动将之前保存的数插入
int i = 0;
for (int j = 0; j < array.length; j++) {
// 遇到奇数时
if (array[j] % 2 == 1) {
int tmp = array[j];
for (int k = j - 1; k >= i; k--) {
array[k+1] = array[k];
}
array[i++] = tmp;
}
}
return array;
}
}
链表中倒数最后k个结点
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode FindKthToTail (ListNode pHead, int k) {
// write code here
//先定义两个整数,当两数相差k-1时就爱开始同时增加
if (pHead == null || k == 0) {
return null;
}
Stack<ListNode> s = new Stack<>();
while(pHead != null) {
s.push(pHead);
pHead = pHead.next;
}
if (s.size() < k) {
return null;
}
ListNode result = s.pop();
while (--k > 0) {
ListNode m = s.pop();
m.next = result;
result = m;
}
return result;
}
}