摘要:
题目表述 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例: **输入:**x = 4 **输出:**2 二分法 二分 阅读全文
摘要:
题目表述 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 输出: True 说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3) 阅读全文
摘要:
题目表述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例: 归并排序 归并排序本质,递归加合并两个有序链表。 利用快慢指针,找到链表中点,以中点为边界,将链表拆分成为两个子链表。 对两个子链表分别进行排序。 将两个排序后的子链表合并,得到完整的排序后的链表。可以使用 阅读全文
摘要:
题目表述 如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : 二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。 偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增 奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 阅读全文
摘要:
题目表述 把符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在下标 i(0 < i < arr.length - 1),满足 arr[0] < arr[1] < ... < arr[i - 1] < arr[i] arr[i] > arr[i + 1] > ... 阅读全文
摘要:
什么是单例模式? 单例模式就是保证一个类只有一个对象的实例,实现这种功能的方式就叫单例模式。 如何实现单例模式 因为保证一个类只能有一个实例,不能多次实例化,不能允许用户new对象,所以需要将构造方法私有化,通过提供类的方法来让外部获取对象实例 单例模式主要存在两种方式实现:饿汉式和懒汉式 饿汉式 阅读全文
摘要:
什么是JMM? 在了解JMM之前,先了解下为什么提出了JMM。 CPU缓存,在多核CPU的情况下,带来了可见性问题 操作系统对当前执行线程的切换,带来了原子性问题 编译器指令重排优化,带来了有序性问题。 JMM 即Java内存模型,也就是Java Memory Model,简称JMM,本身是一种抽象 阅读全文
摘要:
Volatile关键字 使用锁的方式可以解决共享变量内存可见性问题,但是使用锁太笨重,因为它会带来线程上下文的切换开销。对于解决内存可见性问题,Java还提供了一种弱形式的同步,就是Volatile关键字。该关键字可以确保对一个变量的更新对其他线程马上可见。当一个变量被声明为volatile时,线程 阅读全文
摘要:
题目表述 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 示例: **输入:**s = "(1+(4+5+2)-3)+(6+8)" **输出:**23 双栈解法 使用两个栈numsStack和o 阅读全文
摘要:
题目表述 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格子 (0, 0) ,且你希望去最右下角的格子 (rows-1, columns-1) (注意 阅读全文