剑指offer练习刷题11~15
2018-03-07 17:27
253 查看
第十二题
第十三题
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
第十四题
题目描述
输入一个链表,输出该链表中倒数第k个结点。
第十五题
题目描述
给定一个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思路:和第十四题一样,借助集合。
相关文章推荐
- 曾经做过的c练习(11-15)
- learning python in the hard way习题11~15的附加题练习
- 15-11-常用对象API(String类-练习3-最大相同子串)
- 2-11. 两个有序链表序列的合并(15):链表数据结构基础练习
- 剑指offer面试题15:链表中倒数第k个结点
- 每日练习(15)
- 《剑指offer》:[15]实现指数函数:x的y次方
- windws 8 应用小技巧(11-15)
- C#学习基础概念二十五问 11-15
- leetCode练习(15)
- 11单元练习
- 11-20 Python 字符串练习 ——“大数字”
- 剑指offer--(15)对称的二叉树--Java描述
- 11-15缓存笔记
- 11-22 Python数字运算练习
- 11-23 Python 字符串数字练习 二元一次方程求解
- 第06天OC语言(11):分类练习
- 实验项目 2-11. 两个有序链表序列的合并(15)
- C/C++程序题(11-15)
- 15天学会jQuery (11-15)