2025年- H13-Lc121-189.轮转数组(普通数组)---java版
1.题目描述
2.思路
详细例子:
定义一个左数组,定义一个右边数组。刚开始左数组的第一个元素是固定的=1,就是等于第一个元素左边的元素的乘积。右数组最后一个元素为1,等于最后一个元素最右边的元素的乘积。
3.代码实现
方法一:带测试用例
import java.util.Arrays;public class H238 {public int[] productExceptSelf(int[] nums) {int n=nums.length;int[] answers=new int[n];int[] left=new int[n];//除当前元素的左区间int[] right=new int[n];//除当前元素的右区间left[0]=1;for(int i=1;i<n;i++){left[i]=nums[i-1]*left[i-1];}right[n-1]=1;for(int i=n-2;i>=0;i--){right[i]=right[i+1]*nums[i+1];}for(int i=0;i<n;i++){answers[i]=left[i]*right[i];//answer是一个一维数组}return answers;}public static void main(String[] args){H238 test04=new H238();int[] nums={1,2,3,4};int[] res=test04.productExceptSelf(nums);System.out.println(Arrays.toString(res));}}
方法二:不带测试用例
class Solution {public int[] productExceptSelf(int[] nums) {int n=nums.length;int[] answers=new int[n];int[] left=new int[n];//除当前元素的左区间int[] right=new int[n];//除当前元素的右区间left[0]=1;for(int i=1;i<n;i++){left[i]=nums[i-1]*left[i-1];}right[n-1]=1;for(int i=n-2;i>=0;i--){right[i]=right[i+1]*nums[i+1];}for(int i=0;i<n;i++){answers[i]=left[i]*right[i];//answer是一个一维数组}return answers;}
}