leetcode刷题记录(20)-中等

本文记录了LeetCode中等难度的五道题目:1. 除自身以外数组的乘积,利用两次遍历计算;2. 搜索二维矩阵,采用二分查找法;3. 为运算表达式设计优先级,讨论不同加括号策略;4. 只出现一次的数字,线性时间复杂度解决方案;5. 丑数II,找到第n个丑数的方法。
摘要由CSDN通过智能技术生成

1.除自身以外数组的乘积

题目:

给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。

说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。

思路:除这个数之外的成员的乘积,且不能用除法,且要在O(n)的时间复杂度内完成。

最直观的思路,就是:某个数对应的结果,是这个数左边的数之积,与这个数右边的数之积的积。所以,两次遍历,从左到右累乘,再从右到左累乘,每次累乘不包括自身。最后同位置的数相乘,就是结果。

时间复杂度:O(n),空间复杂度O(n)

/**
 * @param {number[]} nums
 * @return {number[]}
 */

var productExceptSelf = function (nums) {
  const l = nums.length;
  let temp = 1;
  const res = new Array(1);
  for (let i = 0; i < l; i++) {
    res[i] = temp;
    temp *= nums[i];
  }
  temp = 1;
  for (let i = l - 1; i >= 0; i--) {
    res[i] *= temp;
    temp *= nums[i];
  }
  return res;
};

2.搜索二维矩阵

题目:

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:

每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
示例:

现有矩阵 matrix 如下:

[
  [1,   4,  7, 11, 15],
  [2,   5,  8, 12, 19],
  [3,   6,  9, 16, 22],
  [10, 13, 14, 17, 24],
  [18, 21, 23, 26, 30]
]
给定 target = 5,返回 true。

给定 target = 20,返回 false。

思路:这种升序或者降序的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值