Java解决LeetCode热点编程题
需积分: 5 11 浏览量
更新于2024-12-03
收藏 5KB ZIP 举报
资源摘要信息:"LeetCodeProblems"
1. 二的幂
问题描述:判断给定的整数是否为2的幂次方。
知识点:
- 整数表示和位操作
- 二进制数的理解
- 对于2的幂次方数,其二进制表示只有一个1,其余都是0。
- 利用位运算符`&`,对于2的幂次方数,`n & (n - 1)`的结果总是0,因为只有最后一位是1。
示例代码(Java):
```java
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
```
2. 单一号码
问题描述:给定一个包含2n + 1个数字的数组,找到数组中唯一一个未重复的数字。
知识点:
- 数组操作
- 哈希表(如果可以使用额外空间)
- 异或运算,因为异或运算有交换律和结合律,相同数字异或结果为0,任何数与0异或结果为它自己。
示例代码(Java):
```java
public int singleNumber(int[] nums) {
int single = 0;
for (int num : nums) {
single ^= num;
}
return single;
}
```
3. 嘶嘶声
问题描述:在英语中,只有1、21、22这样的数字才会发出嘶嘶声,输入一个整数,判断其是否为嘶嘶声数字。
知识点:
- 数字到字符串的转换
- 字符串遍历
- 特定数字的发音规则
4. 包含重复项
问题描述:判断一个数组是否包含重复元素。
知识点:
- 数组遍历
- 哈希集合(如果可以使用额外空间)
- 排序后比较相邻元素(如果不使用额外空间)
示例代码(Java):
```java
public boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
if (set.contains(num)) {
return true;
}
set.add(num);
}
return false;
}
```
5. 反向字符串
问题描述:编写一个函数,其作用是将输入的字符串反转过来。
知识点:
- 字符串操作
- 字符数组操作
- 字符串逆转算法
示例代码(Java):
```java
public String reverseString(String s) {
char[] str = s.toCharArray();
int n = str.length;
for (int i = 0; i < n / 2; i++) {
char temp = str[i];
str[i] = str[n - 1 - i];
str[n - 1 - i] = temp;
}
return new String(str);
}
```
6. 移动零
问题描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
知识点:
- 数组操作
- 双指针技术
- 元素交换和位置调整
示例代码(Java):
```java
public void moveZeroes(int[] nums) {
int j = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 0) {
nums[j] = nums[i];
if (i != j) {
nums[i] = 0;
}
j++;
}
}
}
```
7. 两个和
问题描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
知识点:
- 数组遍历
- 哈希表
- 查找算法
示例代码(Java):
```java
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
```
8. 买卖股票的最佳时间
问题描述:给定一个数组 prices,其第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
知识点:
- 动态规划
- 股票交易模型
- 利润最大化策略
示例代码(Java):
```java
public int maxProfit(int[] prices) {
int maxprofit = 0;
for (int i = 1; i < prices.length; i++) {
if (prices[i] > prices[i - 1])
maxprofit += prices[i] - prices[i - 1];
}
return maxprofit;
}
```
以上知识点涵盖了数组操作、位运算、字符串处理、动态规划、哈希表等在编程中常用的算法和数据结构。通过解决这些问题,可以提高编程能力和逻辑思维能力。在LeetCode平台上练习这些问题,还可以帮助程序员准备面试,尤其是对那些希望在IT行业中找到工作的求职者。
2019-08-14 上传
2021-03-19 上传
2021-04-13 上传
2021-02-25 上传
156 浏览量
2021-07-07 上传
2021-07-06 上传
点击了解资源详情
点击了解资源详情