数据结构
抹茶饼
这个作者很懒,什么都没留下…
展开
-
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。考虑使用 斐波那契数列(递归)495 ms 9300Kpublic class Solution { public int JumpFloor(int target) { if(target<1) return 0;...原创 2019-07-23 23:45:39 · 893 阅读 · 1 评论 -
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相加: 5-101...原创 2019-08-24 00:47:57 · 109 阅读 · 0 评论 -
归并排序
归并排序,使用递归求解的方法#include <stdlib.h>#include <stdio.h>void Merge(int a[],int low, int mid, int high){ //sizeof只有在看到数组定义时才能够测出字节数 // printf("sizeof(a)/sizeof(a[low])= %d\n",(siz...原创 2019-08-24 12:20:26 · 78 阅读 · 0 评论 -
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。`public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { p...原创 2019-08-23 00:11:01 · 77 阅读 · 0 评论 -
输入一个链表,反转链表后,输出新链表的表头
输入一个链表,反转链表后,输出新链表的表头public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}public class Solution { public ListNode ReverseList...原创 2019-08-23 00:12:43 · 632 阅读 · 0 评论 -
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; ...原创 2019-08-23 00:44:20 · 229 阅读 · 0 评论 -
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.import java.util.ArrayList;public class Solution { public A...原创 2019-08-26 21:59:05 · 404 阅读 · 0 评论 -
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。class Solution { stack<int> s;public: void push(int value) { s.push(value); } void pop() { if(s.empty()) re...原创 2019-08-28 09:11:15 · 219 阅读 · 0 评论 -
统计一个数字在排序数组中出现的次数。
统计一个数字在排序数组中出现的次数。public class Solution { public int GetNumberOfK(int [] array , int k) { int result=0,low=0,high=array.length-1,mid=0; while(low<=high){ mid=(hig...原创 2019-08-29 23:56:39 · 177 阅读 · 0 评论 -
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字运行时间:17ms占用内存:9428k//num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果import java.util.ArrayList;public class Solution { public void FindNumsAp...原创 2019-08-30 00:27:52 · 764 阅读 · 0 评论 -
操作给定的二叉树,将其变换为源二叉树的镜像
操作给定的二叉树,将其变换为源二叉树的镜像二叉树的镜像定义:源二叉树8/ 6 10/ \ / 5 7 9 11镜像二叉树8/ 10 6/ \ / 11 9 7 5public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;...原创 2019-08-23 23:17:55 · 353 阅读 · 0 评论 -
插入排序
直接插入排序适用于基本有序或者数量不大的序列,可以适用于顺序存储和链式存储的线性表,时间复杂度为O(n^2),是一个稳定的排序。#include <stdio.h>#include <stdlib.h>void Insert_sort(int a[],int n){ int i,j,temp; for(i=0; i<n-1; i++) ...原创 2019-08-23 19:01:42 · 116 阅读 · 0 评论 -
交换排序
冒泡排序从前往后(从后往前),两两比较,每趟比较可以确定一个元素的位置,时间复杂度为O(n^2),是一个稳定的排序。#include <stdio.h>#include <stdlib.h>void Bubble_Sort(int k[],int n)//稳定的排序算法{ int i,j; for(i=0; i<n-1; i++) { ...原创 2019-08-23 18:53:15 · 71 阅读 · 0 评论 -
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
**一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。**递归思路 运行时间:14ms 占用内存:9296k因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级跳1级,剩下n-1级,则剩下跳法是f(n-1)跳2级,剩下n-2级,则剩下跳法是f(n-2)所以f(n)=f(n-1)+f(n-2)+…+f(1)因为...原创 2019-07-24 00:26:06 · 2705 阅读 · 0 评论 -
*求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)**
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)Way1 Java 方法考虑使用&& 逻辑与运算运行时间:13ms占用内存:9312kboolean t=(n>0)&&(sum+=Sum_Solution(n-1))>0;//Java 声明boobean数...原创 2019-07-24 22:55:59 · 252 阅读 · 0 评论 -
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?仍然是斐波那契数列21 ------ 1 种22 ------ 2 种23 ------ 3 种24 ------ ||||、----、 --||、|–| 、 ||–运行时间:611ms占用内存...原创 2019-07-24 23:14:57 · 177 阅读 · 0 评论 -
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示考虑与(&)运算 , 每次n和(n-1)与操作 ,就会把对应源原数据n的2进制中的最后一个1变为0运行时间:16ms占用内存:9244kpublic class Solution { public int NumberOf1(int n) { int m=0; while(n!...原创 2019-07-25 00:06:44 · 1480 阅读 · 0 评论 -
二分法查找旋转数组的最小值
旋转数组的最小值原创 2019-07-21 00:18:01 · 652 阅读 · 0 评论 -
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
使用累乘 直接暴力求解 复杂度O(n)运行时间:43ms占用内存:10564kpublic class Solution { public double Power(double base, int exponent) { if(exponent==0) return 1; if(base == 0 && expo...原创 2019-07-26 00:05:31 · 191 阅读 · 0 评论 -
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
定义新数组,空间换时间运行时间:17ms占用内存:9292kpublic class Solution { public void reOrderArray(int [] array) { if(array.length==0||array==null){ return; } int a[]= new in...原创 2019-07-26 23:18:56 · 268 阅读 · 0 评论 -
输入一个链表,输出该链表中倒数第k个结点。
两个指针,一前一后前面的比后面的先走k步,然后一起向后走运行时间:22ms占用内存:9660k/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution {...原创 2019-07-27 00:36:59 · 80 阅读 · 0 评论 -
选择排序
堆排序#include <stdlib.h>#include <stdio.h>void swap(int k[],int i,int j){ int temp=k[i]; k[i]=k[j]; k[j]=temp;}void heapAdjust(int k[],int s,int n){ int i,temp; te...原创 2019-08-23 17:14:41 · 76 阅读 · 0 评论 -
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。1*2,1*3,1*5 min 2 2*2,1*3,1*5 min 3 2*2,2*3,1*5 min 4 2*2,2*3,1*5 min 5...运行时间:18ms占用内存:9532k...原创 2019-08-30 01:10:38 · 1201 阅读 · 0 评论