当前位置:首页 > 技术分析 > 正文内容

leetcode2022_go_将一维数组转变成二维数组

ruisui883个月前 (02-18)技术分析10

题目

给你一个下标从 0 开始的一维整数数组 original 和两个整数 m 和 n 。

你需要使用 original 中 所有 元素创建一个 m 行 n 列的二维数组。

original 中下标从 0 到 n - 1 (都 包含 )的元素构成二维数组的第一行,

下标从 n 到 2 * n - 1 (都 包含 )的元素构成二维数组的第二行,依此类推。

请你根据上述过程返回一个 m x n 的二维数组。如果无法构成这样的二维数组,请你返回一个空的二维数组。

示例 1:输入:original = [1,2,3,4], m = 2, n = 2 输出:[[1,2],[3,4]]

解释:构造出的二维数组应该包含 2 行 2 列。

original 中第一个 n=2 的部分为 [1,2] ,构成二维数组的第一行。

original 中第二个 n=2 的部分为 [3,4] ,构成二维数组的第二行。

示例 2:输入:original = [1,2,3], m = 1, n = 3 输出:[[1,2,3]]

解释:构造出的二维数组应该包含 1 行 3 列。

将 original 中所有三个元素放入第一行中,构成要求的二维数组。

示例 3:输入:original = [1,2], m = 1, n = 1 输出:[]

解释:original 中有 2 个元素。

无法将 2 个元素放入到一个 1x1 的二维数组中,所以返回一个空的二维数组。

示例 4:输入:original = [3], m = 1, n = 2 输出:[]

解释:original 中只有 1 个元素。

无法将 1 个元素放满一个 1x2 的二维数组,所以返回一个空的二维数组。

提示:1 <= original.length <= 5 * 104

1 <= original[i] <= 105

1 <= m, n <= 4 * 104

解题思路分析

1、遍历;时间复杂度O(n),空间复杂度O(n)

func construct2DArray(original []int, m int, n int) [][]int {
   total := len(original)
   if n*m != total {
      return nil
   }
   res := make([][]int, 0)
   index := 0
   for i := 0; i < m; i++ {
      temp := make([]int, 0)
      for j := 0; j < n; j++ {
         temp = append(temp, original[index])
         index++
      }
      res = append(res, temp)
   }
   return res
}

2、遍历;时间复杂度O(n),空间复杂度O(n)

func construct2DArray(original []int, m int, n int) [][]int {
   total := len(original)
   if n*m != total {
      return nil
   }
   res := make([][]int, 0)
   for i := 0; i < total; i = i + n {
      res = append(res, original[i:i+n])
   }
   return res
}

总结

Easy题目,直接遍历即可

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2047.html

标签: go数组
分享给朋友:

“leetcode2022_go_将一维数组转变成二维数组” 的相关文章

Vue组件通信之props深入详解!

props 是 Vue 组件中一个很重要的概念。它是用来从父组件向子组件传递数据的。为什么需要props?这是因为在Vue中,组件是相互隔离的。每个组件都有自己的作用域,子组件无法直接访问父组件的状态或值。通过props,父组件可以将数据传递给子组件。使用props的步骤:1. 在子组件中定义pro...

Gitlab 的使用和代码审查流程介绍

1、先简洁介绍下项目常用的信息-面板统计页面2、用户信息面板3、服务器信息4、项目信息5、重点介绍代码提交审核机制和授权合并机制开发人员推送代码的时候不能直接推送到master,否则就会报错。此时开发人员要本地新建分支然后在提交上来列出修改了哪些细节管理员可以管理这些分支合并到master6、指派合...

HTML5+眼球追踪?黑科技颠覆传统手机体验

今天,iH5工具推出一个新的神秘功能——眼动追踪,可以通过摄像头捕捉观众眼球活动!为了给大家具体演示该功能的使用,我做了一个案例,供大家参考。实际效果如下:案例比较简单,就是通过眼动功能获取视觉焦点位置,剔除用户看中的牌。现在,舞台的属性中多了一个“启用眼动”的选项,另外,还多了一个“启用摄像头”的...

Vue进阶(幺叁捌):vue路由传参的几种基本方式

1、动态路由(页面刷新数据不丢失)methods:{ insurance(id) { //直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/particulars/${id}`,...

22《Vue 入门教程》VueRouter 路由嵌套

1. 前言本小节我们介绍如何嵌套使用 VueRouter。嵌套路由在日常的开发中非常常见,如何定义和使用嵌套路由是本节的重点。同学们在学完本节课程之后需要自己多尝试配置路由。2. 配置嵌套路由实际项目中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层...

从 Vue2.0 到 React17——React 开发入门

作者:佚名来源:前端大全前言找工作时发现有一些公司是以React作为技术栈的,而且薪资待遇都不错,为了增加生存的筹码,所以还是得去学一下React,增加一项求生技能。因为我用Vue2.0开发项目已经四年了,故用Vue2.0开发项目的思路来学习React。前端项目是由一个个页面组成的,对于Vue来说,...