0%


题目描述

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地算法

原地算法:在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转换资料的算法。当算法执行时,输入的资料通常会被要输出的部分覆盖掉。不是原地算法有时候称为非原地(not-in-place)或不得其所(out-of-place)。

示例 1:

输入:matrix = [[1, 1, 1], [1, 0, 1], [1, 1, 1]]
输出:[[1, 0, 1], [0, 0, 0], [1, 0, 1]]

示例 2:

输入:matrix = [[0, 1, 2, 0], [3, 4, 5, 2], [1, 3, 1, 5]]
输出:[[0, 0, 0, 0], [0, 4, 5, 0], [0, 3, 1, 0]]

提示:

  • m == matrix.length
  • n == matrix[0].length
  • 1 <= m, n <= 200
  • -2^31 <= matrix[i][j] <= 2^31 - 1
阅读全文 »


本文面向 Java 初学者,详细介绍 Spring Boot 框架原理、应用场景及从零搭建 Web 应用的完整流程。

Spring Boot 框架简介

基本原理

Spring Boot 是 Spring 框架的扩展,通过 约定优于配置 的理念解决传统 Spring 应用配置复杂的问题,简化 Spring 应用的初始搭建和开发过程。通过自动配置和起步依赖(Starter Dependencies)来减少开发者的配置工作,Spring Boot 内嵌了 Tomcat、Jetty 或 Undertow 等服务器,因此无需部署 WAR 文件即可运行。核心思想是 让开发更简单

核心特性

  1. 自动配置:通过 @EnableAutoConfiguration 自动配置 Bean(基于项目中的 jar 依赖自动配置 Spring 应用)
  2. 起步依赖:通过提供预定义的依赖描述符(如 spring-boot-starter-web 包含了开发 Web 应用所需的依赖)简化构建配置,解决版本冲突。
  3. 内嵌服务:内置 Tomcat/Jetty/Undertow 等服务器,无需部署 WAR,直接运行一个独立的应用即可。
  4. Actuator:提供生产级监控和管理功能,如监控应用的健康状况、信息查看等。

工作原理

1
2
3
4
[启动类] → [@SpringBootApplication] 
→ 扫描 @Component → 加载 @Configuration
→ 读取 spring.factories → 应用自动配置
→ 启动内嵌容器

应用场景

Spring Boot 适用于构建微服务架构、RESTful API、企业级应用等。

阅读全文 »


题目描述

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组 是数组中的一个连续部分。

示例 1:

输入:nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
输出:6
解释:连续子数组 [4, -1, 2, 1] 的和最大,为 6

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5, 4, -1, 7, 8]
输出:23

提示:

  • 1 <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4
阅读全文 »


题目描述

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。

子数组 是数组中元素的连续非空序列。

示例 1:

输入:nums = [1, 1, 1], k = 2
输出:2

示例 2:

输入:nums = [1, 2, 3], k = 3
输出:2

提示:

  • 1 <= nums.length <= 2 * 10^4
  • -1000 <= nums[i] <= 1000
  • -10^7 <= k <= 10^7
阅读全文 »


题目描述

给定一个整数数组 nums,处理以下类型的多个查询:

计算索引 leftright (包含 leftright)之间的 nums 元素的和 ,其中 left <= right

实现 NumArray 类:

  • NumArray(int[] nums) 使用数组 nums 初始化对象
  • int sumRange(int i, int j) 返回数组 nums 中索引 leftright 之间的元素的总和 ,包含 leftright 两点(也就是 nums[left] + nums[left + 1] + ... + nums[right] )

示例 1:

输入:
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出:
[null, 1, -1, -3]
解释:
NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1))
numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))

提示:

  • 1 <= nums.length <= 10^4
  • -10^5 <= nums[i] <= 10^5
  • 0 <= i <= j < nums.length
  • 最多调用 10*4sumRange 方法
阅读全文 »


题目描述

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

示例 1:

输入:strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出:[["bat"], ["nat", "tan"], ["ate", "eat", "tea"]]

示例 2:

输入:strs = [""]
输出:[[""]]

示例 3:

输入:strs = ["a"]
输出:[["a"]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母
阅读全文 »


题目描述

给你两个正整数 nm 。现定义两个整数 num1num2 ,如下所示:

num1:范围 [1, n] 内所有 无法被 m 整除 的整数之和。
num2:范围 [1, n] 内所有 能够被 m 整除 的整数之和。

返回整数 num1 - num2

示例 1:

输入:n = 10, m = 3
输出:19
解释:在这个示例中:
范围 [1, 10] 内无法被 3 整除的整数为 [1, 2, 4, 5, 7, 8, 10] ,num1 = 这些整数之和 = 37 。
范围 [1, 10] 内能够被 3 整除的整数为 [3, 6, 9] ,num2 = 这些整数之和 = 18 。
返回 37 - 18 = 19 作为答案。

示例 2:

输入:n = 5, m = 6
输出:15
解释:在这个示例中:
范围 [1, 5] 内无法被 6 整除的整数为 [1, 2, 3, 4, 5] ,num1 = 这些整数之和 = 15 。
范围 [1, 5] 内能够被 6 整除的整数为 [] ,num2 = 这些整数之和 = 0 。
返回 15 - 0 = 15 作为答案。

示例 3:

输入:n = 5, m = 1
输出:-15
解释:在这个示例中:
范围 [1, 5] 内无法被 1 整除的整数为 [] ,num1 = 这些整数之和 = 0 。
范围 [1, 5] 内能够被 1 整除的整数为 [1, 2, 3, 4, 5] ,num2 = 这些整数之和 = 15 。
返回 0 - 15 = -15 作为答案。

提示:

  • 1 <= n, m <= 1000
阅读全文 »


题目描述

给你一个字符串数组 wordswords 中每个元素都是一个包含两个小写英文字母的单词。请你从 words 中选择一些元素并按任意顺序连接它们,并得到一个尽可能长的回文串 。每个元素至多只能使用一次。请你返回你能得到的最长回文串的长度 。如果没办法得到任何一个回文串,请你返回 0

说明: 回文串指的是从前往后和从后往前读一样的字符串。

示例 1:

输入:words = ["lc", "cl", "gg"]
输出:6
解释:一个最长的回文串为 "lc" + "gg" + "cl" = "lcggcl" ,长度为 6 。"clgglc" 是另一个可以得到的最长回文串。

示例 2:

输入:words = ["ab", "ty", "yt", "lc", "cl", "ab"]
输出:8
解释:最长回文串是 "ty" + "lc" + "cl" + "yt" = "tylcclyt" ,长度为 8 。"lcyttycl" 是另一个可以得到的最长回文串。

示例 3:

输入:words = ["cc", "ll", "xx"]
输出:2
解释:最长回文串是 "cc" ,长度为 2 。"ll" 是另一个可以得到的最长回文串。"xx" 也是。

提示:

  • 1 <= words.length <= 10^5
  • words[i].length == 2
  • words[i] 仅包含小写英文字母。
阅读全文 »