摘要: 题目描述 思路:前缀/后缀乘积数组 构造除自身以外数组的左边前缀乘积 构造除自身以外数组的右边后缀乘积 然后对应位置相乘 方法一: class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; / 阅读全文
posted @ 2024-01-14 17:34 Ac_c0mpany丶 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 一、前缀和的作用 前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。 二、前缀和的思路 将原始数组进行预处理,将来需要查询数据的时候,只需要查询预处理的前缀和数组的某些值即可。 前缀和的求解是【动态规划】。 三、前缀和的定义 四、前缀和数组的构造 //int[] nums = {3, 5, 阅读全文
posted @ 2024-01-14 16:38 Ac_c0mpany丶 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目描述 思路:前缀和 前缀和数组(prefixSum)的构造 方法一: class Solution { public int[] runningSum(int[] nums) { int[] preSum = new int[nums.length]; preSum[0] = nums[0]; 阅读全文
posted @ 2024-01-14 16:22 Ac_c0mpany丶 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目描述 思路:左右指针 方法一:暴力,超出时间限制 模拟所有情况,记录最大的体积值。 体积 = Math.min(height[i], height[j]) * (j - i) class Solution { public int maxArea(int[] height) { int res 阅读全文
posted @ 2024-01-14 16:16 Ac_c0mpany丶 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目描述 思路:左右指针 只考虑数字和字母 字母的话需要全部转化为小写 然后使用左右指针判断是否是回文串 方法一: class Solution { public boolean isPalindrome(String s) { List<Character> list = new ArrayLis 阅读全文
posted @ 2024-01-14 16:10 Ac_c0mpany丶 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目描述 思路:左右指针 方法一: class Solution { public void reverseString(char[] s) { int left = 0, right = s.length - 1; while (left < right) { char temp = s[left 阅读全文
posted @ 2024-01-14 15:50 Ac_c0mpany丶 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目描述 思路:快慢指针 slow指针:其前面都是数值不等于val的元素。 fast指针:用于遍历。 方法一: class Solution { public int removeElement(int[] nums, int val) { int slow = 0, fast = 0; for ( 阅读全文
posted @ 2024-01-14 15:48 Ac_c0mpany丶 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目描述 思路:快慢指针 slow指针指向已经处理元素的下一个位置 因为数组有序,如果nums[fast] == nums[slow - 2],那么nums[fast] 肯定等于nums[slow - 1],那么此时这个数就出现了三次。此时slow保持不变,fast继续遍历。 关键:nums[fas 阅读全文
posted @ 2024-01-14 13:23 Ac_c0mpany丶 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 题目描述 思路:快慢指针 slow指针:指向已经处理的区域(没有重复元素)的最后一个位置 fast指针:指向当前正在处理的元素 方法一: class Solution { public int removeDuplicates(int[] nums) { int slow = 0, fast = 0 阅读全文
posted @ 2024-01-14 12:43 Ac_c0mpany丶 阅读(4) 评论(0) 推荐(0) 编辑