leetcode 463 python
来源:互联网 发布:国考上岸经验知乎 编辑:程序博客网 时间:2024/06/05 08:32
You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one island (i.e., one or more connected land cells). The island doesn't have "lakes" (water inside that isn't connected to the water around the island). One cell is a square with side length 1. The grid is rectangular, width and height don't exceed 100. Determine the perimeter of the island.
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]
Answer: 16
class Solution(object): def islandPerimeter(self, grid): """ :type grid: List[List[int]] :rtype: int """ a = len(grid) b = len(grid[0]) t = 0 for x in range(a): for z in range(b): #print("%d",j) if grid[x][z]==0: continue t = t + 4 if x>0 and grid[x-1][z]==1: t = t -2 if z>0 and grid[x][z-1]==1: t = t -2 return t
def islandPerimeter(self, grid):
return sum(sum(map(operator.ne, [0] + row, row + [0]))
for row in grid + map(list, zip(*grid)))
Since there are no lakes, every pair of neighbour cells with different values is part of the perimeter (more precisely, the edge between them is). So just count the differing pairs, both horizontally and vertically (for the latter I simply transpose the grid).
我们先看map。map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回。
举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list[1, 2, 3, 4, 5, 6, 7, 8, 9]
上,就可以用map()
实现如下:
现在,我们用Python代码实现:
>>> def f(x):... return x * x...>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])>>> list(r)[1, 4, 9, 16, 25, 36, 49, 64, 81]
sum()的参数是一个list
python中的operator库
ne(...) ne(a, b) -- Same as a!=b.
zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了:
>>> a = [1,2,3]>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)
[(1, 2, 3), (4, 5, 6)]
- leetcode 463 python
- leetcode python
- leetcode python
- leetcode python
- leetcode python
- leetcode python
- leetcode python
- leetcode python
- leetcode python
- leetcode python
- [leetcode: Python]
- 【LeetCode with Python】 Permutations
- Leetcode Python Palindrome Number
- LeetCode-Sort List(Python)
- 【LeetCode with Python】 Subsets
- [leetcode]LRU Cache (python)
- 【leetcode】Reorder List (python)
- 【leetcode】Candy(python)
- Spring和MyBatis环境整合
- Java NIO:浅析I/O模型
- 权限机制
- mysql操作基础命令
- 制作最小linux内核(3)
- leetcode 463 python
- iOS 10 的各种适配问题
- 舞蹈链应用之精确覆盖模板
- |洛谷|树形DP|P1270 “访问”美术馆
- Spring MVC 配置 druid 数据源实例
- angular 的数据双向绑定
- Android中的消息机制
- POJ 3219 Binomial Coefficients 学习学习
- MyBatis学习之入门 (一)