《算法零基础100讲》
yaCoding
科技改变生活,IT成就未来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《算法零基础100讲》(第60讲) 前缀和(四) 线性前缀和配合哈希表
1.1590. 使数组和能被 P 整除 /* 1.给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。 2.请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。子数组 定义为原数组中连续的一组元素*/ class Solution { public int minSubarray(int[] nums, int p) { int n = nums.length; in原创 2022-01-04 21:01:11 · 521 阅读 · 0 评论 -
《算法零基础100讲》(第59讲) 前缀和(三) 线性前缀和统计
1109. 航班预订统计 /* 1.这里有 n 个航班,它们分别从 1 到 n 进行编号。 2.有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。 3.请你返回一个长度为 n 的数组 answer,里面的元素是每个航班预定的座位总数*/ class Solution { public i原创 2022-01-03 20:58:38 · 361 阅读 · 0 评论 -
《算法零基础100讲》(第57讲) 前缀和(一) 线性前缀和入门
303. 区域和检索 - 数组不可变 给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j])) /*给定一个整数数组 num原创 2022-01-02 21:50:10 · 284 阅读 · 0 评论 -
《算法零基础100讲》哈希表
1.剑指 Offer 03. 数组中重复的数字 /*找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字 */ class Solution { public int findRepeatNumber(int[] nums) { int [] arr = new int [nums.length]; for(int原创 2022-01-02 10:05:06 · 525 阅读 · 0 评论 -
《算法零基础100讲》(第53讲) 区间问题(二) 区间的并集和交集
57. 插入区间 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 class Solution { /* 1.给你一个 无重叠的,按照区间起始端点排序的区间列表。 2.在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)*/ public int[][] insert(int[][] intervals, int[] newInterval) {原创 2021-12-31 20:50:22 · 801 阅读 · 0 评论 -
《LeetCode零基础指南》(第二讲) 函数
1.371. 两整数之和 /**给你两个整数 a 和 b ,不使用 运算符 + 和 - ,计算并返回两整数之和。 */ class Solution { public int getSum(int a, int b) { return a + b; } } 2.面试题 17.01. 不用加号的加法 /**设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。 */ class Solution {//异或计算 public int add(in原创 2021-12-10 11:11:55 · 364 阅读 · 0 评论 -
《算法零基础100讲》(第24讲) 字符串算法(四) - 字符计数法
数组中第 K 个独一无二的字符串 /** 1.独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串。 2.给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字符串 。如果 少于 k 个独一无二的字符串,那么返回 空字符串 "" 。 3.注意,按照字符串在原数组中的 顺序 找到第 k 个独一无二字符串。 */ class Solution { public String kthDistinct(String[] arr, int k) { .原创 2021-11-24 20:05:15 · 358 阅读 · 0 评论 -
《算法零基础100讲》(第47讲) 位运算 (异或) 进阶
文章目录 260. 只出现一次的数字 III 861. 翻转矩阵后的得分 /* 1.有一个二维矩阵 A 其中每个元素的值为 0 或 1 。 2.移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。 3.在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。 4.返回尽可能高的分数 */ class Solution { public int matrixScore(int[][] grid) {原创 2021-12-06 20:13:05 · 211 阅读 · 1 评论 -
《算法零基础100讲》(第46讲) 位运算 (异或) 入门
1.477. 汉明距离总和` /*两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。 给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间 汉明距离的总和 */ /*思路:设元素的总数为m,当某一位出现1的次数为n,则两个数字的二进制数对应的数量为(m - n) * n */ class Solution { public int totalHammingDistance(int[] nums) { int count = 0; in原创 2021-12-06 19:27:51 · 476 阅读 · 0 评论 -
《算法零基础100讲》(第45讲) 位运算 (位或) 进阶
1.剑指 Offer II 005. 单词长度的最大乘积 /* 1.给定一个字符串数组words,请计算当两个字符串words[i]和words[j] 不包含相同字符时,它们长度的乘积的最大值。 2.假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回0*/ class Solution { public int maxProduct(String[] words) { int n = words.length; int [] counts =原创 2021-12-05 22:07:29 · 224 阅读 · 0 评论 -
《算法零基础100讲》(第44讲) 位运算 (位或) 入门
1.231. 2 的幂 /* 1.给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 2.如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。 */ class Solution { public boolean isPowerOfTwo(int n) { return n > 0 && (n & (n - 1)) == 0; } } 2.2044. 统计按位或能得原创 2021-12-03 22:07:53 · 676 阅读 · 0 评论
分享