数据结构和算法
zhoushenxian
我是一个菜鸟android开发工程师,目前从事电视端开发
展开
-
剑指offer: 输入n,求斐波那契数列的第n项值
首先要知道什么是斐波那契数列,比如1,1,2,3,5,8,13,21,34...比如输入n=3,那么求出的值就是2,所以题目就是,输入n,求斐波那契数列的第n项值分析斐波那契就是当前的是它之前-1的数+它之前-2的数的和, 使用一个表达式就是f(n)=f(n-1)+f(n-2),所以第一种求解方案可以使用递归的方式,但是这方式不推荐使用,性能不好,也就是说空间复杂度比较高递归求解package com.yaqi;public class FindValue { publi.原创 2020-06-02 22:56:49 · 2158 阅读 · 0 评论 -
剑指offer:用二个栈实现队列
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能首先分析栈的特点和队列的特点,才能把这个题做出来,这个题相对来说还是算简单的,栈的特点:先进后出对列的特点:先进先出一个栈负责添加数据,然后把这添加的数据放到另一个栈中,就实现了队列的效果,比如在一个栈中添加数据 1,2,3 然后再弹出栈后把数据添加到另一个栈中,那么这个栈中的数据就是3,2,1 然后再从这个栈中取出数据,比如1是.原创 2020-06-02 10:39:30 · 225 阅读 · 0 评论 -
Java面试题:判断一个数是不是2的几次幂
第一种思路就是拿2*2*2...*2是否等于某个值,这样也可以判断 public static boolean isPowerOfTwo(int n) { if(n<=0){ return false; } int temp = 1; while (temp<=n){ if(temp==n){ return true; }原创 2020-05-26 21:11:17 · 643 阅读 · 0 评论 -
LeetCode -Reverse integer
Reverse integer就是数字翻转问题,比如:Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21原创 2020-05-15 19:09:01 · 276 阅读 · 0 评论 -
LeetCode -Two Sum
算法是每个程序员的必修课,以前也认为做个普通的开发,要懂什么算法和数据结构,现在发现好点的公司算法和数据结构都是必须要问的,而且多学算法对自己的思维扩展是有很大的提高,再说现在求职这么难,不是4 5年前那个美好的时候了,所以要每天学点算法积累下,当然不太可能做到算法工程师那种了今天的题目是求数组中要求二个数组相加等于某个数,然后求出这二个值的下标,这题还是算简单的题目描述给定一个整数数...原创 2020-05-04 17:23:26 · 487 阅读 · 0 评论 -
斐波那契
首先引用百度百科中对斐波那契的描述斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n - 1)+F...原创 2020-05-04 13:34:58 · 667 阅读 · 0 评论 -
数组实现队列
队列是先进先出的线性结构,我们Java中也提供了Queue等一系列子类,在线程池中会有几个常用的队列,今天就使用数组来实现队列的基本操作package com.zgz.search;import java.util.Arrays;public class MyQueue { private int[] arr; public MyQueue() { ...原创 2020-05-04 01:03:04 · 244 阅读 · 0 评论 -
数组实现栈
栈也是数据结构中的一种,是一种先进后出结构,代码如下package com.zgz.search;public class MyStack { private int[] arr; public MyStack(){ arr = new int[0]; } /** * 压入元素 */ public void push(int...原创 2020-05-04 00:34:08 · 406 阅读 · 0 评论 -
二分法查找
二分法查找的前提必须数组是经过排序的,这是必须得条件,否则就不能用二分法查找了,二分法查找就是拿查找的值在数组的中间进行对比,如果是大于这个中间值,说明这个查找的值在后面,那么就从后面的一半中查找,小于就是在前面的一半查找,思路也不复杂,请看代码package com.zgz.search;/** * 二分法查找必须是建立在数组已经是排序的情况下了 */public class ...原创 2020-05-03 23:44:14 · 298 阅读 · 0 评论 -
线性查找
线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败这个非常简单,没啥好分析的,直接上代码package com.zgz.search;/** * 线性查找是最简单的查找方式 * 就是和数组或者集合中的数据从开始一一对比 */public cla...原创 2020-05-03 23:21:18 · 635 阅读 · 0 评论 -
数据结构与算法之时间复杂度和空间复杂度(三)
算法是要讲效率的 ,而效率是指算法的执行时间 执行时间短当然是效率高 反之则低那么如何来衡量算法的时间呢?1:算法采用的策略 方案2:编译产生的代码质量3:问题的输入规模4:机器执行指令的速度比如1+2+...+100,第一种: int n = 100; //执行一次 int sum = 0; //执行一次 for(int i=...原创 2019-07-09 07:04:47 · 170 阅读 · 0 评论 -
算法(二)
算法定义:算法是解决特定问题求解的步骤的描述,在计算中表现为指令的有限序列,并且每个指令表现为一个或者多个操作.算法的5个基本特征1:输入 算法需要有0个或者多个输入 比如一个方法没有行参 就打印一段话2:输出 算法至少一个或者多个输出 输出可以是打印结果输出 或者一个方法返回值也算输出3:有穷性 指算法执行有限的步骤后,会自动结束而不会出现死循环,并且每一个步骤都是在可接受的时...原创 2019-07-09 05:42:04 · 306 阅读 · 0 评论 -
数据结构概要
什么是数据结构:数据结构是一门研究非数值计算程序设计中问题中的操作对象,以及他们之间的关系和操作等相关问题的学科.通俗的来讲就是研究数据元素之间的关系存在一种或者多种特定关系的集合传统上把数据结构分为物理结构和逻辑结构逻辑结构:是指数据对象中数据元素之间的相互关系 体现在时间上物理结构:是指数据的逻辑结构在计算机中存储的形式 体现在空间上逻辑结构有四种:1:...原创 2019-07-09 05:20:35 · 640 阅读 · 0 评论 -
求任意整数的阶乘
求任意整数的阶乘原创 2017-03-29 13:07:17 · 4514 阅读 · 0 评论 -
java 求某一区域之间生成n个随机数组
java 求某一区域之间生成n个随机数组原创 2017-01-06 14:09:18 · 1464 阅读 · 1 评论 -
数组中添加数据后并排序显示出来
数组中添加数据后并排序显示出来原创 2016-02-14 00:52:16 · 1678 阅读 · 0 评论 -
数据结构热身
数据结构热身原创 2016-02-14 00:33:19 · 518 阅读 · 0 评论