Golang语言中的多维数组传递

在Go语言中,当多维数组直接作为函数实参进行参数传递的时候,会有很大的限制性,比如除第一维数组的其他维数需要显式给出等;此时可以使用多维切片来作为参数传递: type s1 []int type s2 []s1 剑指offer一书面试题3: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列按照从上到下的顺序排序。完成一个函数,输入二维数组和要查找的数,判断该数是否存在于二维数组中。 代码:

package main

import (
	"errors"
	"fmt"
	"os"
)

type s1 []int
type s2 []s1

var searchErr error = errors.New("search error")

func main() {
	a := s2{
		s1{1, 2, 3, 4, 5, 6},
		s1{7, 8, 9, 10, 11, 12},
		s1{13, 14, 15, 16, 17, 18},
		s1{20, 21, 22, 23, 24, 25}}

	result, err := search(a[:][:], 4, 6, 21)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	if result == true {
		fmt.Println("Key is searched")
	}
}

func search(a s2, row, col, key int) (flag bool, err error) {
	if row < 0 || col < 0 {
		return false, searchErr
	}
	flag = false
	rowNum := 0
	colNum := col - 1
	for rowNum < row && colNum >= 0 {
		if a[rowNum][colNum] == key {
			flag = true
			break
		} else if a[rowNum][colNum] > key {
			colNum--
		} else {
			rowNum++
		}
	}
	return
}

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏社区的朋友们

sizeof 知多少? (上)

稍熟悉 C/C++ 的朋友,对于 sizeof 肯定不陌生,通过它我们可以知晓某个类型或者实例的内存大小( 以字节计 ),网上关于这个话题的信息其实挺多的,但是...

1670
来自专栏calmound

KMP专题

POJ 2406 Power Strings http://poj.org/problem?id=2406 题意:找出s字符窜由多少个重复子窜循环构成 分析:K...

3128
来自专栏Leetcode名企之路

【Leetcode】59. 螺旋矩阵 II

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

1850
来自专栏xingoo, 一个梦想做发明家的程序员

剑指OFFER之旋转数组的最小数字(九度OJ1386)

题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1...

20210
来自专栏SeanCheney的专栏

《Pandas Cookbook》第02章 DataFrame基本操作1. 选取多个DataFrame列2. 对列名进行排序3. 在整个DataFrame上操作4. 串联DataFrame方法5. 在

5154
来自专栏落影的专栏

iOS开发-OpenGL ES入门教程2

教程 OpenGLES入门教程1-Tutorial01-GLKit 这次的是shader编译链接、glsl入门和简单图形变换。 OpenGL ES系列教程在这...

3088
来自专栏听雨堂

从MapX到MapXtreme2004[7]-对Table、Feature等的理解

一、Table         2004中,Table还是表,可以来自原始的mapinfo表,也可以来自数据库的二维表、文本等。Table的等价概念是featu...

2108
来自专栏chenjx85的技术专栏

leetcode-507-Perfect Number

1444
来自专栏Python小屋

Python文本处理2个小案例(文本嗅探与关键词占比统计)

问题描述:有一些句子和一些关键词,现在想找出包含至少一个关键词的那些句子(文本嗅探),可以参考print('='*30)之前的代码。如果想进一步计算每个句子中的...

39411
来自专栏大神带我来搬砖

如何编写更优雅的代码——java中用break语句模拟goto来中止代码块的执行

根据https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html, java的break语句不仅可...

2709

扫码关注云+社区

领取腾讯云代金券