三数之和
题目 难点: 时间复杂度要优于 O(n^3) 否则会超时 需要去重 排序: ...
题目 难点: 时间复杂度要优于 O(n^3) 否则会超时 需要去重 排序: ...
思路 假设左端点在 L,右端点在 R。 那么面积为 (R - L) * min(height[L], height[R]) ...
移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 ...
字母异位词分组 解法 1:先排序,再 hash 优点:简单,易于实施。 ...
最长连续序列 核心思路,假设这个序列由若干个子序列构成,每个子序列都是连续序列,目的就是找到这些子序列的长度最大值。 ...
字符串 Java 字符串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 import java.nio.charset.StandardCharsets; import java.util.*; public class Main { public static void main(String[] args) { String s1 = "hello"; // 字面量创建 String S3 = String.valueOf(123); // 任意类型转字符串 String s = "a" + "b" + 1; // "ab1" 少量拼接时使用 StringBuilder sb = new StringBuilder(); // 高频拼接使用 for (int i = 0; i < 5; i ++) { sb.append(i).append(","); } String res = sb.toString(); // 拼接集合 s = String.join("-", "a", "b", "c"); // "a-b-c" boolean a1 = s.isEmpty(); // 判空 int length = s.length(); // 长度 boolean a2 = s.startsWith("a"); // 开始 boolean a3 = s.contains("a"); // 包含 // 查找位置 int i = s.indexOf("ab"); // 查找 String sub = s.substring(1, 4); // 左闭右开 String r1 = s.replace("a", "x"); // 直接替换,非正则 String r2 = s.replaceAll("\\d+", "#"); // 正则替换 // 分割 String[] parts = "a,b,c".split(","); // 格式化 String msg = String.format("id=%d, name=%s", 10, "tom"); // 字符编码 char c = s.charAt(0); char[] arr = s.toCharArray(); byte[] bytes = s.getBytes(StandardCharsets.UTF_8); String back = new String(bytes, StandardCharsets.UTF_8); // 码点 s.codePoints().forEach(cp -> { System.out.println(cp); }); } } Go 字符串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 func main() { // 创建字符串 s1 := "hello" fmt.Println(s1) // 字符串长度 fmt.Println(len(s1)) // 少量拼接 s := "a" + "b" + "c"; fmt.Println(s) // 大量拼接 var b strings.Builder for i := 0; i < 10; i++ { b.WriteString("a") } res := b.String() fmt.Println(res) // 拼接切片 parts := []string{"a", "b", "c"} res = strings.Join(parts, "-") fmt.Println(res) // string byte 互转 bs := []byte("hello") s := string(bs) } Python 1 2 3 4 if __name__ == '__main__': s = "cbbc" print(sorted(s)) // b b c c print("".join(sorted(s))) // bbcc JS 1 2 3 4 5 let s = "adbc" let t = s.split("").sort() // a b c d console.log(t) let res = t.join("-") // a-b-c-d console.log(res) 数组/列表 Java 数组基本用法 1 2 3 4 5 6 7 8 9 10 public static void main(String[] args) { int[] arr = {1, 2, 3}; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } arr = new int[]{3, 4, 5}; for (int v : arr) { System.out.println(v); } } Java 有个奇怪的点就是可以使用字面量来在声明的位置初始化,但是在运行时其他位置时,只能使用 new int[] 这种格式来进行赋值。 ...
业务编程如何进行通用性抽象 00:03 大部分人的疑惑:虽然写了领域里面的通用设计,例如资产入库、出库、调拨,但是在实际的应用中,我们会发现不可能通过领域方法来实现业务,业务通常有条件控制。 ...
源码分享以及如何通过本项目学习 00:17 代码以代码组的形式划分。 这是为了模拟一个公司的项目组。 ...
出入库领域分析与代码实战 01:09 如何抽象资产,现实中可以对应一个商品。 ...
订单领域设计及代码实践 00:33 比较复杂的点:SKU 可能是动态的。 可以卖实体商品,也可以卖虚拟商品,也可以卖租赁系统。 ...