122. 买卖股票的最佳时机 II

122. 买卖股票的最佳时机 II

一、题目描述

给定一个数组 prices ,其中prices[i] 是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

 121. 买卖股票的最佳时机

121. 买卖股票的最佳时机

一、题目描述

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。

设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

 18. 四数之和

18. 四数之和

一、题目描述

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

注意:答案中不可以包含重复的四元组。

  • 0 <= nums.length <= 200
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109

 15. 三数之和

15. 三数之和

一、题目描述

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

  • 0 <= nums.length <= 3000
  • -105 <= nums[i] <= 105

 16. 最接近的三数之和

16. 最接近的三数之和

一、题目描述

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和

假定每组输入只存在唯一答案。

  • 3 <= nums.length <= 10^3
  • -10^3 <= nums[i] <= 10^3
  • -10^4 <= target <= 10^4

 6186. 按位或最大的最小子数组长度

6186. 按位或最大的最小子数组长度

一、题目描述

给你一个长度为 n 下标从 0 开始的数组 nums ,数组中所有数字均为非负整数。

对于 0 到 n - 1 之间的每一个下标 i ,你需要找出 nums 中一个 最小 非空子数组,它的起始位置为 i (包含这个位置),同时有 最大 的 按位或运算值 。

换言之,令 Bij 表示子数组 nums[i…j] 的按位或运算的结果,你需要找到一个起始位置为 i 的最小子数组,这个子数组的按位或运算的结果等于 max(Bik) ,其中 i <= k <= n - 1 。

 05_指令集和解释器

指令集和解释器

Java虚拟机顾名思义,就是一台虚拟的机器,而字节码(bytecode)就是运行在这台虚拟机器上的机器码。

一、字节码指令

1.1 指令结构

字节码中存放编码后的 Java 虚拟机指令:

  • 每条指令都以一个单字节的操作码(opcode)开头。

  • 由于只使用一字节表示操作码,Java 虚拟机最多只能支持 256 条指令。

到第八版为止,Java 虚拟机规范已经定义了205条指令,操作码分别是0(0x00)202(0xCA)254(0xFE)255(0xFF)

 04_运行时数据区

运行时数据区

一、数据结构

在运行Java程序时,Java虚拟机需要使用内存来存放各式各样的数据。Java虚拟机规范把这些内存区域叫作运行时数据区。

运行时数据区可以分为两类:一类是多线程共享的,另一类则是线程私有的。

  • 多线程共享的运行时数据区需要在Java虚拟机启动时创建好,在Java虚拟机退出时销毁
  • 线程私有的运行时数据区则在创建线程时才创建,线程退出时销毁

 02_操作符

操作符

Java 中的操作符有很多,大概可以分成以下几种:

  • 关系操作符:>、<、>=、<=、==、!=
  • 逻辑操作符:!、&、|、&&、||
  • 条件操作符:?:
  • 算术操作符:-、++、–、+、-、*、/、%
  • 位操作符:~、&、|、^、<<、>>、>>>
  • 赋值操作符:=、+=、-=、*=、/=、&=、|=、^=、<<=、>>=、>>>=

 01_基本类型

基本类型

一、类型大小

在 Java 中,通过 new 生成的对象数据是存储在“堆”中,而基本类型则是直接把“值”保存在栈中。

Java 中每种基本类型所占用的存储空间大小都是确定的,不会随着机器硬件架构变化而变化。

  • 存储空间大小不变性,为Java的可移植性提供了很大的帮助