挑战100天 AI In LeetCode Day06(热题+面试经典150题)

简介: 挑战100天 AI In LeetCode Day06(热题+面试经典150题)

一、LeetCode介绍

LeetCode是一个在线编程网站,提供各种算法和数据结构的题目,面向程序员、计算机科学专业学生和技术爱好者等人群,旨在帮助他们提高算法和编程技能。LeetCode上的问题通常来自各种技术公司的面试题目,因此它也是程序员面试准备的重要资源之一。

LeetCode上的问题涵盖了各种难度级别,从入门级到专家级都有不同难度的题目可供练习。用户可以选择使用不同的编程语言提交答案,LeetCode能够对结果进行评估并返回测试结果。

除了题目外,LeetCode还提供了讨论区、排行榜等社区功能,用户可以在这里交流学习心得、解决疑难问题,并与其他用户比较自己的做题成绩。

挑战100天 AI In LeetCode是基于LeetCode题库,借助AI的能力进行解题、并学习其解题过程。

二、LeetCode 热题 HOT 100-8

2.1 题目

整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-231 <= x <= 231 - 1

2.2 题解

题目要求我们反转一个给定的 32 位有符号整数,并且在反转后的整数超过 32 位有符号整数的范围时,返回 0。我们可以使用取余和除法来操作这个题目。

解题思路:

  1. 首先,我们使用整除操作 x / 10 来移除 x 的最后一位数字。我们需要在 x 不会是 0 的情况下进行这个操作,否则会造成除以 0 的错误。
  2. 然后,我们将 x 除以 10 的结果存储在临时变量中,并将其模 10 的结果加到反转后的结果中。
  3. 最后,我们将临时变量赋值给 x,然后重复上述步骤,直到 x 为 0。

在 Java 中,我们可以使用循环和除法操作来实现这个算法。需要注意的是,我们需要使用 long 类型来存储中间结果,以避免超出 int 类型的范围。

在这个解法中,我们使用了一个 while 循环来重复执行操作,直到 x 等于 0。在每次循环中,我们将 result 乘以 10,然后加上 x 取模 10 的结果。然后,我们将 x 除以 10,以便下一次循环。在每次循环结束时,我们检查 result 是否超出了 int 类型的范围。如果是,则返回 0。否则,我们将 result 赋值给 result,并继续循环。当 x 为 0 时,我们退出循环并返回 result 的整数值。

public class Solution {  
    public int reverse(int x) {  
        long result = 0;  
        while (x != 0) {  
            long temp = result * 10 + x % 10;  
            x /= 10;  
            if (temp > Integer.MAX_VALUE || temp < Integer.MIN_VALUE) {  
                return 0;  
            }  
            result = temp;  
        }  
        return (int) result;  
    }  
}

三、面试经典 150 题-8

数组 / 字符串

3.1 题目

买卖股票的最佳时机 II

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
示例 1:
输入:prices = [7,1,5,3,6,4]
输出:7
解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。
     总利润为 4 + 3 = 7 。
示例 2:
输入:prices = [1,2,3,4,5]
输出:4
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。
     总利润为 4 。
示例 3:
输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0 。
提示:
1 <= prices.length <= 3 * 10 4
0 <= prices[i] <= 10 4

3.2 题解

时间复杂度是 O(n),其中 n 是 prices 数组的长度。因为我们只需要遍历一次 prices 数组即可得到最大利润。

空间复杂度是 O(1),因为我们只使用了一个额外的变量 max_profit 来存储最大利润,而不需要额外的数据结构来存储中间结果。

解题思路:

  1. 初始化一个变量 max_profit 为 0,用于存储最大利润。
  2. 遍历 prices 数组,对于每个元素 prices[i]: a. 如果 i == 0,说明还没有进行过交易,所以跳过当前循环。 b. 否则,计算当前价格与前一天价格的差值 diff = prices[i] - prices[i-1]。 c. 如果 diff > 0,说明今天的价格高于昨天的价格,可以进行卖出操作,更新 max_profit = max(max_profit, diff)。
  3. 返回 max_profit。
public int maxProfit(int[] prices) {
    int max_profit = 0;
    for (int i = 1; i < prices.length; i++) {
        int diff = prices[i] - prices[i - 1];
        if (diff > 0) {
            max_profit += diff;
        }
    }
    return max_profit;
}

至此,挑战100天 AI In LeetCode Day06(热题+面试经典150题)完成,后续会持续调整;查阅过程中若遇到问题欢迎留言或私信交流。

相关文章
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI的奥秘:从理论到实践
【9月更文挑战第19天】本文将带你走进AI的世界,从理论到实践,深入浅出地解析AI的工作原理和应用场景。我们将一起探讨AI如何改变我们的生活,以及如何利用AI技术解决实际问题。无论你是AI初学者还是有一定基础的开发者,都能在本文中找到有价值的信息。让我们一起开启AI的学习之旅吧!
47 5
|
人工智能 算法 程序员
挑战100天 AI In LeetCode Day03(热题+面试经典150题)
挑战100天 AI In LeetCode Day03(热题+面试经典150题)
123 0
|
人工智能 算法 程序员
挑战100天 AI In LeetCode Day08(热题+面试经典150题)
挑战100天 AI In LeetCode Day08(热题+面试经典150题)
135 0
|
存储 人工智能 算法
挑战100天 AI In LeetCode Day07(热题+面试经典150题)
挑战100天 AI In LeetCode Day07(热题+面试经典150题)
137 0
|
存储 人工智能 算法
挑战100天 AI In LeetCode Day05(热题+面试经典150题)
挑战100天 AI In LeetCode Day05(热题+面试经典150题)
67 0
|
人工智能
阿里 AI 阅读理解冠军背后,用了什么技术?
今天,阿里巴巴高级算法专家吴晨带你揭秘这项技术。
1004 0
|
算法 编解码
算法学习之路|万绿丛中一点红
对于计算机而言,颜色不过是像素点对应的一个24位的数值。现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大。
968 0
|
算法 测试技术
算法学习之路|结绳
给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。
1446 0
|
算法
算法学习之路|最简分数
一个分数一般写成两个整数相除的形式:N/M,其中M不为0。最简分数是指分子和分母没有公约数的分数表示形式。
1502 0
|
SQL 算法
算法学习之路|德才论
宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”
1066 0