您的位置:首页 > Web前端

剑指offer练习刷题11~15

2018-03-07 17:27 253 查看
第十二题

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
public class Solution {
public double Power(double base, int exponent) {
if(exponent==0) return 1.0;
else if(exponent<0){
double sum=Power(base,-exponent);
return 1.0/sum;
}
double sum=base;
for(int i=0;i<exponent-1;i++) sum*=base;
return sum;
}
}
运行时间:51ms占用内存:10624k思路:求幂次的计算根据指数大小不同,计算方式也不同,应分为三种情况分别讨论。其中负数幂等于其绝对值幂的倒数,可用递归再次调用该方法。

第十三题
题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
public class Solution {
public void reOrderArray(int [] array) {
for(int i=1;i<array.length;i++) {
if(array[i]%2==1) {
int k=i;
for(int j=i-1;j>=0;j--) {
if(array[j]%2==1) break;
int a=array[k];
array[k]=array[j];
array[j]=a;
k--;
}
}
}
}
}
运行时间:19ms占用内存:9300k思路:类似于插入排序的思路,从第二个数开始依次查询每个数的奇偶性,若是偶数则不做任何操作,若是奇数则查询该数的前一个数的奇偶性,若是偶数,则交换,再继续查询前一个数的奇偶性,若是奇数则不做任何操作(因为此时前面全都是奇数),这样就能一遇到奇数就将其与前面的偶数做交换,达到奇数向前,偶数向后的目的。

第十四题
题目描述

输入一个链表,输出该链表中倒数第k个结点。
/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}*/
import java.util.LinkedList;
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null || k==0) return null;
LinkedList<ListNode> link =new LinkedList<>();
while(head!=null) {
link.add(0,head);
head=head.next;
}
if(k>link.size()) return null;
return link.get(k-1);
}
}
运行时间:23ms占用内存:8748k思路:将链表节点倒序放入集合中,链表倒数第K个节点即集合的第K个元素。

第十五题

题目描述

输入一个链表,反转链表后,输出链表的所有元素。
/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}*/
import java.util.LinkedList;
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null) return null;
LinkedList<ListNode> link =new LinkedList<>();
while(head!=null) {
link.add(0,head);
head=head.next;
}
for(int i=0;i<link.size()-1;i++) {
link.get(i).next=link.get(i+1);
}
link.get(link.size()-1).next=null;
return link.get(0);
}
}
运行时间:25ms占用内存:8676k思路:和第十四题一样,借助集合。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指offer java