![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
文章平均质量分 64
Code_Seeker
悟已往之不谏,知来者之可追。
展开
-
从尾到头打印链表
输入一个链表,从尾到头打印链表每个节点的值。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java原创 2017-05-26 22:35:15 · 228 阅读 · 0 评论 -
希尔排序实现与复杂度、稳定性分析
import java.util.*;public class ShellSort { public int[] shellSort(int[] a, int n) { //先判断条件 if(a== null|| n<2){ return a; } int feet = n/2;原创 2017-06-08 21:31:32 · 5182 阅读 · 1 评论 -
几种排序以及其时间复杂度
1.选择排序:不稳定,时间复杂度 O(n^2) 选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。 2.插入排序:稳定,时间复杂度 O(n^2) 插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L原创 2017-06-08 21:15:47 · 2333 阅读 · 0 评论 -
冒泡排序、选择排序、插入排序总结
冒泡排序思路:每一轮都是将最大(或最小)的数据移动到最后面,然后遍历范围-1,移动数据通过两两进行比较的方式,一共进行n-1轮,最后得到有序数组。代码实现:http://blog.csdn.net/mypromise_tfs/article/details/72820785插入排序:i不断++,用来遍历元素,j代码实现:http://blog.csdn.net/原创 2017-05-31 15:49:21 · 280 阅读 · 0 评论 -
冒泡排序练习题
import java.util.*;public class BubbleSort { public int[] bubbleSort(int[] a, int l) { // write code here for(int i = l-2;i>=0;i--){ for(int j=0;j<=i;j++){原创 2017-05-31 15:38:26 · 3245 阅读 · 0 评论 -
选择排序练习题
import java.util.*;public class SelectionSort { //升序思路:每次找到第i个元素之后的最小的值放在i的位置上。 public int[] selectionSort(int[] arr, int n) { int len = arr.length; for(int i=0;i<len;i++){原创 2017-05-31 15:17:09 · 2024 阅读 · 1 评论 -
插入排序练习题
import java.util.*;public class InsertionSort { public int[] insertionSort(int[] A, int n) {//插入排序思路,在排序集合中插入下一个遍历元素到合适的位置(第一个比这个元素大的元素之前,后面的元素全部后移) for(int i=1;i原创 2017-05-31 14:34:36 · 1135 阅读 · 0 评论 -
数组中找重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。import java.util.Set;import java.util.HashSet;import java.l原创 2017-05-29 10:35:26 · 589 阅读 · 0 评论 -
构建乘积数组
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。public class Solution { public int[] multiply(int[] A) { if(A == null ||原创 2017-05-29 09:41:00 · 243 阅读 · 0 评论 -
两个队列实现一个栈
用两个队列实现一个栈的功能?要求给出算法和思路!:入栈:将元素进队列A出栈:判断队列A中元素的个数是否为1,如果等于1,则出队列,否则将队列A中的元素 以此出队列并放入队列B,直到队列A中的元素留下一个,然后队列A出队列,再把 队列B中的元素出队列以此放入队列A中。import java.util.LinkedList;import java.util.Q原创 2017-05-28 14:38:20 · 341 阅读 · 0 评论 -
用两个栈实现队列
import java.util.Stack;public class Solution { Stack stack1 = new Stack(); Stack stack2 = new Stack(); public void push(int node) { stack1.push(node); }原创 2017-05-28 14:06:07 · 199 阅读 · 0 评论 -
滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],原创 2017-05-28 13:31:07 · 252 阅读 · 0 评论 -
变态跳台阶(待深入)
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。public class Solution { public int JumpFloorII(int target) { /* 关于本题,前提是n个台阶会有一次n阶的跳法。分析如下: f(1) = 1 f(2) = f(2-1)原创 2017-05-27 11:00:32 · 278 阅读 · 0 评论 -
跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。public class Solution { public int JumpFloor(int target) { //思路,因为一次只能跳一步或者2步,所以f(n) = f(n-1)+f(n-2),因为当你在n-1阶的时候,我们可以一步跳到n阶,有多少种跳到原创 2017-05-27 10:36:58 · 230 阅读 · 0 评论 -
判断链表中是否有环 ----- 有关单链表中环的问题
给定一个单链表,判断其中是否有环,已经是一个比较老同时也是比较经典的问题,在网上搜集了一些资料,然后总结一下大概可以涉及到的问题,以及相应的解法。首先,关于单链表中的环,一般涉及到一下问题:1.给一个单链表,判断其中是否有环的存在;2.如果存在环,找出环的入口点;3.如果存在环,求出环上节点的个数;4.如果存在环,求出链表的长度;5.如果存在环,求出环上距离任意转载 2017-05-27 09:53:30 · 222 阅读 · 0 评论 -
快速排序思路与复杂度
public class QuickSort { //思路:选择第一个元素是key,然后从数组最后进行比较,a[j]>=key的时候j--,a[j]<key的时候说明它应该在key的左边,此时a[i] = a[j]使得a[j]处比key小的值在key左边,然后i++,从下一个开始检测a[i]与key的大小 // 当a[i]key的时候说明它不应该在key左边,a[j] =原创 2017-06-08 22:32:28 · 561 阅读 · 0 评论