leetcode-5-basic

解题思路:
设两个变量land和sink,land的值是1的数量,sink表示内部的边。result = land*4-sink*2。按行扫描得到land,
同时得到同一行中内部边的数目;然后按列扫描,得到同一列中内部边的数目。
int islandPerimeter(vector<vector<int>>& grid) {
int row = grid.size();
int col = grid[0].size();
int i;
int j;
int result = 0;
int land = 0;
int sink = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (grid[i][j] == 1) {
land ++;
if (j != col-1 && grid[i][j+1] == 1) {
sink ++;
}
}
}
}
for (i = 0; i < col; i++) {
for (j = 0; j < row; j++) {
if (grid[j][i] == 1) {
//land ++;
if (j != row-1 && grid[j+1][i] == 1) {
sink ++;
}
}
}
}
result = 4 * land - 2 * sink;
return result;
}

解题思路:
本来以为这道和上面差不多,不过其实不大一样。我的思路是,count存连续1的个数,curMax存count历史上的最大值。
从nums[0]开始扫描到nums[size-2],分三种情况考虑:
1) 0,1交界。此时要重置count。
2) 1,0交界。此时count计数截止,可能需要更新curMax。
3) 1,1交界。此时count+1。
因为最后需要再判断一次curMax和count的大小关系(例如[0,1]这种,curMax还未获得赋值),但由于count是从1开始计的,
如果还未扫描到1,如[0, 0]这种情况,那么返回的仍是count=1,显然不正确。所以加一个判断nums中是否有1的flag。对于
下一位是1的情况设置为true。
int findMaxConsecutiveOnes(vector<int>& nums) {
//int result = 0;
int curMax = 0;
int count = 0;
int size = nums.size();
if (size == 1 && nums[0] == 1)
return 1;
if (size == 1 && nums[0] == 0 || size == 0)
return 0;
int i;
// if 1 exits, true
bool flag = false;
count = 1;
for (i = 0; i < size-1; i++) {
// for 0,1
if (nums[i] == 0 && nums[i+1] == 1) {
count = 1;
flag = true;
continue;
}
// for 1,0
if (nums[i] == 1 && nums[i+1] == 0) {
if (count > curMax) {
curMax = count;
continue;
}
}
// for 1,1
if (nums[i] == 1 && nums[i+1] == 1) {
count++;
flag = true;
continue;
}
}
if (count > curMax && flag == true)
curMax = count;
return curMax;
}
leetcode-5-basic的更多相关文章
- [LeetCode] 224. Basic Calculator 基本计算器
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- [LeetCode] 227. Basic Calculator II 基本计算器 II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- [LeetCode] 772. Basic Calculator III 基本计算器之三
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- [LeetCode] 227. Basic Calculator II 基本计算器之二
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- LeetCode#227.Basic Calculator II
题目 Implement a basic calculator to evaluate a simple expression string. The expression string contai ...
- Java for LeetCode 227 Basic Calculator II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- Java for LeetCode 224 Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- (medium)LeetCode 224.Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- (medium)LeetCode 227.Basic Calculator II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- leetcode 224. Basic Calculator 、227. Basic Calculator II
这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...
随机推荐
- Mac OS X
Mac OS X 除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的 ...
- 关于小米手机USB传输稍大点的文件老中断的问题解决方法!
关于小米手机USB传输稍大点的文件老中断的问题解决方法! 这是一个很痛苦的事情,当你传输大文件的时候,传输到一半就会莫名其妙的中断,拔插数据线很多次以后,好不容易没准可以成功传输一次. 后来使用了36 ...
- windows 用VMware创建linux虚拟机,安装操作系统CentOS7.2
1.按照向导创建虚拟机 以下是安装虚拟机的步骤,没有写的直接下一步 [1]主页-创建新虚拟机 [2]选择 自定义(高级) [3]选择稍后安装操作系统 [4]给虚拟机命名并指定所在位置 [5]给处理器配 ...
- 常见的JedisConnectionException 异常
最近在使用redis出现以下的异常: 1.redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectExcept ...
- Jenkins访问路径配置自定义的相对路径
Jenkins安装时没有配置自定义的相对访问路径,例如配置的端口是29957,那访问路径就是http://localhost:29957.以下介绍把访问路径改成http://localhost:299 ...
- Ubuntu 12.04源
deb http://ubuntu.uestc.edu.cn/ubuntu/ precise main restricted universe multiverse deb http://ubuntu ...
- tsung基准测试方法、理解tsung.xml配置文件、tsung统计报告简介
网上搜集的资料,资料来源于:http://blog.sina.com.cn/ishouke 1.tsung基准测试方法 https://pan.baidu.com/s/1Ne3FYo8XyelnJy8 ...
- JavaScript_2_实现
1. HTML中的脚本必须位于<script>与</script>标签之间 JavaScript是所有现代浏览器以及HTML5中的默认脚本语言 2. 脚本可被放置在HTML页面 ...
- C++11 function用法 可调用对象模板类
std::function<datatype()> ()内写参数类型 datatype 代表function的返回值 灵活的用法.. 代码如下 #include <stdio.h&g ...
- java HashMap 内存泄漏
import java.util.HashMap; import java.util.Map; public class HashMapOver { public static void main(S ...