首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据结构-栈结构

注意,这里存储数据需要一个大小为 n 的数组,并不是说空间复杂度就是 O(n)。因为,这 n 个空间是必须的,无法省掉。...当栈中有空闲空间时,入栈操作的时间复杂度为 O(1)。但当空间不够时,就需要重新申请内存和数据搬移,所以时间复杂度就变成了 O(n)。...当扫描到左括号时,则将其压入栈中;当扫描到右括号时,从栈顶取出一个左括号。如果能够匹配,比如“(”跟“)”匹配,“[”跟“]”匹配,“{”跟“}”匹配,则继续扫描剩下的字符串。...如果扫描的过程中,遇到不能配对的右括号,或者栈中没有数据,则说明为非法格式。 当所有的括号都扫描完成之后,如果栈为空,则说明字符串为合法格式;否则,说明有未匹配的左括号,为非法格式。...当我们点击前进按钮时,我们依次从栈 Y 中取出数据,放入栈 X 中。当栈 X 中没有数据时,那就说明没有页面可以继续后退浏览了。当栈 Y 中没有数据,那就说明没有页面可以点击前进按钮浏览了。

41010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android基础:Fragment,看这篇就够了

    对应的同步方法为commitNow(),commit()内部会有checkStateLoss()操作,如果开发人员使用不当(比如commit()操作在onSaveInstanceState()之后),可能会抛出异常...Fragment有个常见的异常: ? 该异常出现的原因是:commit()在onSaveInstanceState()后调用。...因此避免出现该异常的方案有: 不要把Fragment事务放在异步线程的回调中,比如不要把Fragment事务放在AsyncTask的onPostExecute(),因此onPostExecute()可能会在...如果是嵌套Fragment场景,子PagerAdapter的参数传入getChildFragmentManager()。...界面变为可见时,调用setUserVisibleHint(true)。 界面变为不可见时,调用setUserVisibleHint(false)。 懒加载Fragment的实现: ?

    4.9K122

    助你Carry全场的独家面试题

    据观察,当语言支持运算符重载时,编程错误会增加,从而增加了开发和交付时间。...中使用 获取所在Fragment里面子容器的管理器; 注:Fragment嵌套Fragment要用getChildFragmentManager(). 3....当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并可以对其进行处理。...catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;throw语句用来明确地抛出一个异常; throws用来声明一个方法可能抛出的各种异常(当然声明异常时允许无病呻吟); finally...为确保一段代码不管发生什么异常状况都要被执行; try语句可以嵌套,每当遇到一个try语句,异常的结构就会被放入异常栈中,直到所有的try语句都完成。

    32210

    精选Android中高级高频面试题:四大组件及Fragment原理

    参考解答: 发生条件:异常情况下(系统配置发生改变时导致Activity被杀死并重新创建、资源内存不足导致低优先级的Activity被杀死) 系统会调用onSaveInstanceState来保存当前Activity...所以如果在fragment生命周期内获取获取数据,使用replace会重复获取; 添加相同的fragment时,replace不会有任何变化,add会报IllegalStateException异常;...bug,可以使用replace或使用add时,添加一个tag参数; 4、getFragmentManager、getSupportFragmentManager 、getChildFragmentManager..., 如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager(); 因为Fragment是3.0 Android系统API版本才出现的组件,所以3.0以上系统可以直接调用...将service放到前台状态,这样低内存时,被杀死的概率会低一些; 系统广播监听Service状态 将APK安装到/system/app,变身为系统级应用 注意:以上机制都不能百分百保证Service不被杀死

    2K00

    Android开发的那些坑和小技巧

    如果你设置了此属性值为false,就能实现一个在布局上事半功陪的效果。先看一个效果图。 ? 上图中的ListView顶部默认有一个间距,向上滑动后,间距消失,如下图所示。 ?...所以这两个属性的设置将决定getView的调用次数。 由此再延伸出另外一个问题:getView被多次调用。 什么叫多次调用?比如position=0它可能调用了几次。看似很诡异吧。...开始我怀疑时这个view没初始化,但并不是。那就调试一下呗。...以前在项目中,经常出现由于游标没及时关闭或关闭出异常没处理好导致其它的问题产生,而且问题看起来非常的诡异,不好解决。后来,我把整个项目中有关游标的使用重构一遍,后来就再没发生过类似的问题。...9、java.lang.String cannot be converted to JSONObject 解析服务端返回的JSON字符串时,居然抛出了这个异常。

    1.1K30

    《Android基础:Fragment,看这篇就够了》

    对应的同步方法为commitNow(),commit()内部会有checkStateLoss()操作,如果开发人员使用不当(比如commit()操作在onSaveInstanceState()之后),可能会抛出异常...BackStackRecord.java:595) at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574) 该异常出现的原因是...因此避免出现该异常的方案有: 不要把Fragment事务放在异步线程的回调中,比如不要把Fragment事务放在AsyncTask的onPostExecute(),因此onPostExecute()可能会在...变为不可见时,会调用setUserVisibleHint(false),且该方法调用时机: onAttach()之前,调用setUserVisibleHint(false)。...界面变为可见时,调用setUserVisibleHint(true)。 *界面变为不可见时,调用setUserVisibleHint(false)。

    4K62

    行情艰难,Android初中级面试题助你逆风翻盘,每题都有详细答案

    参考解答:发生条件:异常情况下(系统配置发生改变时导致Activity被杀死并重新创建、资源内存不足导致低优先级的Activity被杀死) 系统会调用onSaveInstanceState来保存当前Activity...所以如果在fragment生命周期内获取获取数据,使用replace会重复获取; 添加相同的fragment时,replace不会有任何变化,add会报IllegalStateException异常;...fragment嵌套fragment,那么就需要利用getChildFragmentManager(); 因为Fragment是3.0 Android系统API版本才出现的组件,所以3.0以上系统可以直接调用...如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,回调顺序为onUnbind()→onDestroy(); ?...可以使用startForeground将service放到前台状态,这样低内存时,被杀死的概率会低一些; 5.系统广播监听Service状态 6.将APK安装到/system/app,变身为系统级应用

    80120

    Glide类似You cannot start a load for a destroyed activity异常简单分析

    最近在做项目时,使用Glide加载网络图片时,碰到了 You cannot start a load for a destroyed activity 这个异常; 场景描述:点击进入一个Activity...().getApplicationContext()); } else { android.app.FragmentManager fm = fragment.getChildFragmentManager...也就是当 activity.isDestroyed()为true的时候 同样的还有另外几个异常: You cannot start a load on a fragment before it is...cannot start a load on a null Context 归根结底都是因为我们传入了一个已经销毁的Activity或者是一个空的Context ,Fragment 挂载的Activity为空导致的...回顾使用的场景,是在联网请求成功之后调用的Glide 当执行到Glide.with();方法时,当前的Activity已经销毁了,所以才导致的这个问题。

    37810

    Android 点将台:撒豆成兵

    onPause() |--- 界面已经可见不可交互 onStop() |--- 界面不可见 onSaveInstanceState(Bundle outState) |--- 保存对象状态...fm.beginTransaction();//2.fm开启事务 Bundle bundle = new Bundle();//创建Bundle对象 bundle.putString("data", "#ff0000");//为bundle...赋值 BoxFragment boxFragment = new BoxFragment(); boxFragment.setArguments(bundle);//为Fragment设置Arguments...的生命周期回调 打开时 isVisibleToUser 出现了,而且是最先调用的,一开始是红色 isVisibleToUser= true 总的来说就是生成了红色和黄色两个Fragment并对两者其进行了初始化...break; } } } ---- 3.Fragment的优势 [1].将整个界面的责任碎片化,分散到各个部分,缓解Activity的负担 [2].方便修改/更新:那个地方出现问题

    85120

    Android 基础:Fragment,看这篇就够了 (上)

    对应的同步方法为commitNow(),commit()内部会有checkStateLoss()操作,如果开发人员使用不当(比如commit()操作在onSaveInstanceState()之后),可能会抛出异常...BackStackRecord.java:595) at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574) 该异常出现的原因是...因此避免出现该异常的方案有: 不要把Fragment事务放在异步线程的回调中,比如不要把Fragment事务放在AsyncTask的onPostExecute(),因此onPostExecute()可能会在...show(): 不调用任何生命周期方法,调用该方法的前提是要显示的Fragment已经被添加到容器,只是纯粹把Fragment UI的setVisibility为true。...hide(): 不调用任何生命周期方法,调用该方法的前提是要显示的Fragment已经被添加到容器,只是纯粹把Fragment UI的setVisibility为false。

    6.2K40

    Java面试系列9

    ✎二、必须要知道的运行时异常 ArithmeticException 是出现异常的运算条件时,抛出此异常。 例如,一个整数“除以零”时,抛出此类的一个实例。...用非法索引访问数组时抛出的异常。...对于正在执行的特定操作而言(如将路径段追加到不具有初始 moveto 的 GeneralPath),如果操作在处于非法状态的路径上执行,则 IllegalPathStateException 表示抛出的异常...IllegalStateException 在非法或不适当的时间调用方法时产生的信号 IllegalThreadStateException 指示线程没有处于请求操作所要求的适当状态时抛出的异常。...如果一个数组为null,试图用属性length获得其长度时。 如果一个数组为null,试图访问或修改其中某个元素时。 在需要抛出一个异常对象,而该对象为 null 时。

    2K40

    Android客户端性能异常类

    ,CPU绘制时间会短; 不合理的异步(会导致CPU占用互斥资源); 崩溃 (Crash) 在某些场景下,满足的条件未满足或者需要的资源没有拿到,出现的未预期的运行时异常。...: Native崩溃 主动类:运行时框架代码或业务代码发现的状态异常,代码运行过程中主动触发;这类异常在预期范围内,通过此类方法暴露问题。...ABRT是abort program的缩写;由调用abort函数产生,进程非正常退出。当用户态的 Native 代码在运行过程中发现了某些状态异常,就会给自己(线程)发送信号触发自杀流程。...SIGSEGV类错误出现在CPU的虚拟地址转换物理地址的过程,分两种不同情况。...这类异常和文件的读写相关 SIGILL 当前执行的指令是CPU无法识别的非法指令时,会触发SIGILL信号。

    4.1K10

    Java中常见的异常类型

    IllegalArgumentException 用于调用方法的非法参数。 IllegalMonitorStateException 非法监视器操作,例如等待解锁的线程。...IllegalArgumentException 用于调用方法的非法参数。 IllegalMonitorStateException 非法监视器操作,例如等待解锁的线程。...当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。 java.lang.IllegalThreadStateException 违法的线程状态异常。...当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。 java.lang.IndexOutOfBoundsException 索引越界异常。...java.lang.NegativeArraySizeException 数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。

    2.3K40
    领券