05 2020 档案
摘要:题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金
阅读全文
摘要:题目描述 给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca" 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a z 的小写字母。字符串的最大长度是50000。 1、思路 在判
阅读全文
摘要:代理模式 什么是代理模式? 代理模式就是找一个中介帮你办一些事。你只需要关注自己的事就行了,其他的中介会帮你办好。 代理模式中有三个要素: 抽象对象:接口 代理对象:类 真实对象:类 静态代理 静态代理:有你自己来创建代理对象,每个真实对象都需要由你来创建代理对象。 缺点:如果有很多个真实对象需要被
阅读全文
摘要:IO流学习 流的分类 根据操作单位不同分为字节流和字符流 根据流向不同分为输入流和输出流 根据角色不同分为节点流和处理流 以下四个类是IO流中最基础的类,都是抽象类。其他流都是继承他们的。 | 分类 | 字节流 | 字符流 | | | | | | 输入流 | InputStream | Reader
阅读全文
摘要:题目描述 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。 示例 1: 输入:[4,2,1] 输出:4 解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可
阅读全文
摘要:题目描述 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1 2 3 4 5, 和 k
阅读全文
摘要:了解注解 在学习一个新知识的时候,首先要了解这个知识的的作用,在去学习如何使用,最后了解它的底层原理。 1、注解介绍 JDK5.0开始,Java增加了注解功能。注解可以在程序编译、加载、运行时被读取,然后执行相应的操作。 注解和注释 注释是用来对类、方法或是属性进行解释的,没有实际作用。 注解可以对
阅读全文
摘要:枚举介绍 Java中的枚举是JDK5.0以后添加的新特性,枚举是用来定义一组数量确定的常量的类。 枚举类是一个特殊的类,它和普通类一样可以有构造方法,也可以有属性和普通方法。可以实现接口。 枚举的定义 这就定义了一个枚举类,其中的RED,BLACK,BLUE是这个枚举类的实例,每个实例需要用‘,’隔
阅读全文
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 提示
阅读全文
摘要:死锁问题 什么是死锁? 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。 比如现在A有倚天剑,B有屠龙刀,A想要B的屠龙刀,B想要A的倚天剑,但是A不想把倚天剑给B,B同样也不想把屠龙刀给A。 两个人都等着对方把武器交
阅读全文
摘要:生产者和消费者问题 生产者和消费者的问题是一个线程通信的例子。 比如买馒头,需要先进行生产,生产了就通知消费者来吃馒头。如果馒头没了就通知生产者继续生产。 运行结果: 这里需要注意synchronized的锁对象应该是馒头店,不能是this。因为馒头店只有一个,而this指当前对象,生产者和消费者都
阅读全文
摘要:线程间的通信 线程通信就是线程与线程间进行信息的交换。 这里可以举个例子,两个线程交替的打印0 9这10个数字。 首先分析一下,比如线程一先开始打印,当它打印了数字0后,他应该 等待 线程二打印数字1,线程二打印了之后又要 等待 线程一打印数字2... 那怎么样才能让线程一开始等待呢?这里可以使用O
阅读全文
摘要:题目描述 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。 示例: | Id | Email | | | | | 1 | a@b.com | | 2 | c@d.com | | 3 | a@b.com | 根据以上输入,你的查询应返回以下结果: | Email | | | | a
阅读全文
摘要:题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = "abcdefg", k = 2 输出: "cdefga
阅读全文
摘要:题目描述 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [ 10
阅读全文
摘要:题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 1、思路
阅读全文
摘要:线程安全问题 在多个线程同时访问一个相同的资源的时候会发生线程安全问题。 举个栗子: 买票问题,三个窗口进行买票。 运行结果: 很明显可以看出,在三个线程同时去访问Ticket类的时候,票的数量出现的 重复 和 错误(结果为0) 的情况。 为什么会出现这种情况呢? 因为线程是并发的,并发就是三个线程
阅读全文
摘要:多线程的另外两种创建方式 线程的创建总共有四种方式,分别是继承Thread类、实现Runnable接口、实现Callable接口和通过线程池创建 在前面我已经学习了前面两种创建线程的方式,今天来学习一下后面两种创建线程的方式。Callable接口和线程池技术是在JDK5.0以后添加的。 1、实现Ca
阅读全文
摘要:多线程生命周期 一个线程经过一次完成的运行之后会经历5中状态。 新建:当一个线程类被声明并创建时,创建的线程对象处于新建状态。 MyThread t = new MyThread(); 就绪:当一个处于新建状态的线程对象调用start()方法时,线程对象处于就绪状态。等待CPU进行调度。 t.sta
阅读全文
摘要:多线程学习 基础知识 1、程序、进程、线程 程序:为了完成某个任务,使用某种特定的语言(Java)所编写的指令(代码)的集合。程序是静态的。 进程:一个正在运行的程序就可以叫做进程。 例如:运行中的QQ就是一个进程。 进程是动态的,程序是静态的。 进程是资源分配的最小单位,系统在运行时会为每个进程分
阅读全文
摘要:题目描述 给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。 「距离值」 定义为符合此描述的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j] 满足 |arr1[i] arr2[j]| d=2 |4 9|=5 d=2 |4 1|=3 d=
阅读全文

浙公网安备 33010602011771号