7 kingdoooom

尚未进行身份认证

暂无相关描述

等级
TA的排名 3w+

找出数组中每个数的右边第一个比它大的数

问题描述:给出一组数,找出数组中每个数的右边第一个比它大的数问题分析:利用单调栈,从左至右依次压入数据的索引(若直接压数,则还需要一个数组保存栈中元素所对应的数组位置,如果当前元素小于等于栈顶的索引所对应的数组的值,入栈当前索引,否则将栈顶索引出栈,并在栈顶索引所对应的res数组中记录下当前的值。到最后再检查栈中剩余元素,代表剩余元素右边没有比它大的值,在res对应位置赋值为-1。代码:...

2018-09-19 09:32:30

2018-8-30华为机试第三题

一个很明显的递归问题packagecn.csu.ksh;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;publicclassMain2{ publicstaticvoidmain(String[]args){ Scannersc=new...

2018-08-30 15:58:00

2018-8-30华为机试题第1题

问题描述:字符串之数字子串求和思路:要求时间复杂度O(N),空间O(1)1.不管遇到什么先-'0'=>cur2.若cur不是数字->即不在0~9之间...需要先判断posi是不是false...因为没第一次遇到'-'则会把posi设置为false,第二次先去看看之前posi,如果是'-',那么就约掉这个'-',把posi设置为true...

2018-08-30 15:48:36

sysnchronized的实现原理与应用

在并发编程中,synchronized一直是被使用非常频繁的,很多人会把它称为重量级锁,但是,JavaSE1.6对它有一个重大优化,在1.6中为了减少获得锁和释放锁带来的性能消耗而引入了偏向锁和轻量级锁。我们知道Java中的每一个对象都可以作为锁,具体表现为三种形式:1.对于普通同步方法,锁是当前实例对象2.对于静态同步方法,锁是当前类的Class对象3.对于同步代码块,锁是syn...

2018-08-29 11:39:25

Java并发中——阻塞队列

阻塞队列的使用场景在并发的情况下,生产者消费者模式需要用到队列,生产者线程生产数据,放进队列,然后消费从队列中获取数据,这个在单线程的情况下没有问题。而在使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。在高并发的情况下,可能出现消费者消费速度远大于生产者生产速度,消费...

2018-08-15 16:51:05

Java线程池相关参数以及拒绝策略

为什么要使用线程池在JavaSE中,要实现多线程的方式有多种,例如继承Thread、实现Runnable接口或者Callable接口。但是我们应该要知道,创建一个线程的开销是很大的,因为它总涉及与操作系统交互,我们知道,线程总共有三个过程,分别是创建、使用、销毁。但是在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多。除...

2018-08-13 15:01:26

剑指Offer学习】【面试题18 :二叉树的镜像】

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述二叉树的镜像定义:源二叉树 8 /\ 610 /\/\ 57911 镜像二叉树 8 /\ 106 /\/\ 11975...

2018-08-08 14:41:39

【剑指Offer学习】【面试题12 :数值的整数次方】

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。题目分析很多人看到这个题基本上心里马上就有一个大致的思路了,就是用一个循环来做base的exponent次方,于是代码很快就能出来publicdoublesolution(doublebase,intexponent){doubleresult...

2018-08-07 11:23:33

【剑指Offer学习】【面试题10 :青蛙跳台的变种问题】

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目分析这次的场景和之前青蛙跳台的问题不一样,前一次的场景是青蛙一次可以调1个台阶,也可以跳2个台阶。现在的场景是:青蛙也可以跳上n级。所以情况又发生了变化。现在我们用数学归纳法来分析一下这个变种问题:首先,当n=1时,只有一种跳法 f(1)=1。其次,当...

2018-08-05 19:14:50

【剑指Offer学习】【面试题9 :青蛙跳台问题】

问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。问题分析当n=1,有一种跳法当n=2,一次跳一个跳两次,一次跳两个跳一次,共两种跳法当n>=2时,n个台阶,设有F(n)种跳法      (1)若第一次选择跳1个台阶,那么剩下的n-1个台阶有F(n-1)种跳法      (2)若第一次选中...

2018-08-04 20:18:43

【剑指Offer学习】【面试题6 :重建二叉树】

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路二叉树的前序遍历是从根节点开始的,依次前序遍历左子树,然后再前序遍历右子树。所以在前序遍历中,第一个出现的必定是跟节点。二叉树的中序...

2018-08-03 14:53:51

【剑指Offer学习】【二维数组中的查找】

题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束  如果该数字大于要查找的数字,剔除这个数字所在的列,如果该数字小于要查找的数字,剔除这个数字所在的行。 也就是说如...

2018-08-01 16:00:54

初链—区块链混合共识的领航者

1.蓬勃发展的区块链互联网的高度普及使人类从工业社会迈入信息社会,而区块链技术的出现,又是对互联网技术更上一层的技术革新。区块链思想最早出现在大名鼎鼎的比特币开源项目中。比特币项目在诞生和发展过程中,借鉴了来自数字货币、密码学、博弈论、分布式系统、控制论等多个领域的技术成果,作为其核心支撑的区块链技术更是令人数目的创新成果。区块链技术的诞生为社会中实体货币虚拟化提供了可能,同时货币自身的价值依...

2018-07-29 15:36:58

初链:高性能去中心化公开账本

1.绪论2017-2018年,互联网界最火热的话题之一就是区块链。其去中心化、分布式以及防篡改一系列特性使得人们对于这个可能对互联网发展产生重大影响的技术关注颇多。从比特币的区块链最初版本,到以太坊为主流的进阶版本,再到超级账本项目的版本,区块链技术一直在飞速的发展,并且不断落地到各个领域。本文我将简单介绍区块链中的相关概念以及相关技术理念。2.什么是区块链所谓区块链,字面上的理解就是...

2018-07-27 22:41:47

DEL:区块链4.0时代--让技术更接近价值

1.蓬勃发展的区块链技术的终极魅力,是高度普及之时,价值的极致绽放 互联网的高度普及使人类从工业社会迈入信息社会,而区块链技术的出现,又是对互联网技术更上一层的技术革新。区块链思想最早出现在大名鼎鼎的比特币开源项目中。比特币项目在诞生和发展过程中,借鉴了来自数字货币、密码学、博弈论、分布式系统、控制论等多个领域的技术成果,作为其核心支撑的区块链技术更是令人数目的创新成果。区块链技术的诞生为...

2018-07-23 09:53:20

PBFT算法

引言———分布式系统一致性问题区块链系统,首先是一个分布式系统。传统单节点结构演变到分布式系统,碰到的首要问题就是一致性的保障。很显然,如果分布式集群无法保证处理结果一直的话,那任何建立于其上的业务系统都无法正常工作。一致性问题是分布式领域最为基础也是最重要的问题。如果分布式系统能实现“一致”,对外就可以呈现一个完美的、可扩展的“虚拟节点”,相对于物理节点具有更优越性能和稳定性。这也是分布式...

2018-07-23 09:51:44

谈谈spring中的IOC

学习过Spring框架的人一定都会学习Spring的IoC(控制反转)、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC、DI这两个概念是模糊不清的,是很难理解的,今天谈谈我对SpringIoc的理解。1.什么是IOCIoc—InversionofControl,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交...

2018-07-19 10:41:56

Java抽象类与接口

引言在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。首先来说一下抽象类和接口的相关概念,然后再对两者进行比较。抽象类在描述抽象类之前,我们先来说说抽象方法,Java中的抽象方法是指使用abstract关键字修饰的方法,并且抽象方法只有方法声明,没有实现细节。可以看看抽象方法的语法:abstractvoidmethod();那么如果一个...

2018-07-15 17:41:56

进程和线程的主要区别(总结)

根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调...

2018-06-13 10:11:52

二叉搜索树的后序遍历序列

题目如果输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果,如果是则返回true,如果不是则返回false。假设输入的数组的任意两个数字都互不相同。分析:在后序遍历得到的序列中,最后一个数字是树的根节点的值,数组中前面的数字可以分为两个部分:第一部分为左子树的节点的值,他们都比根节点的值要小;第二部分是右子树节点的值,他们都比根节点的值大。我们在解决这个问题的时候需要用同样的方法来确定...

2018-05-30 11:20:42

查看更多

勋章 我的勋章
    暂无奖章