解题思路:

设两个变量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的更多相关文章

  1. [LeetCode] 224. Basic Calculator 基本计算器

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  2. [LeetCode] 227. Basic Calculator II 基本计算器 II

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  3. [LeetCode] 772. Basic Calculator III 基本计算器之三

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  4. [LeetCode] 227. Basic Calculator II 基本计算器之二

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  5. LeetCode#227.Basic Calculator II

    题目 Implement a basic calculator to evaluate a simple expression string. The expression string contai ...

  6. Java for LeetCode 227 Basic Calculator II

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  7. Java for LeetCode 224 Basic Calculator

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  8. (medium)LeetCode 224.Basic Calculator

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  9. (medium)LeetCode 227.Basic Calculator II

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  10. leetcode 224. Basic Calculator 、227. Basic Calculator II

    这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...

随机推荐

  1. Consul实现服务治理

    .NET Core微服务之基于Consul实现服务治理 https://www.cnblogs.com/edisonchou/p/9124985.html 一.Consul基础介绍 Consul是Ha ...

  2. 单台服务器最大tcp连接

    如果对服务器进行压力测试,常常出现这种情况 tcp连接数过多 netstat   -an    windows查看tcp连接数 那么怎么增加单台服务器的最大连接数呢?       最简单的办法,增加内 ...

  3. js控制语句

    1 条件判断语句 条件语句用于基于不同的条件来执行不同的动作. 1.1if 语句 if (condition){    当条件为 true 时执行的代码} 1.2if...else 语句 if (co ...

  4. java es 骤合操作

    ElasticSearch java API - 聚合查询 以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置.index的mapping为: &q ...

  5. 网页转PDF作为邮件附件

    Nuget 引入 OpenHtmlToPdf using (WebClient wc = new WebClient()) { wc.Encoding = Encoding.UTF8; wc.UseD ...

  6. 《移动Web前端高效开发实战》笔记2——使用Gulp构建一个ECMAScript 6和Sass应用

    8.3.1 安装和配置 运行Gulp需要Node.js环境,请参看第二章内容搭建Node.js环境.使用NPM全局安装Gulp,命令如下: npm install gulp-cli –g 然后,在项目 ...

  7. background-size在IE8不兼容问题

    background-size在IE8及以下浏览器不兼容:要解决的话要用滤镜: filter: progid: DXImageTransform.Microsoft.AlphaImageLoader( ...

  8. 转:error LNK2005: ...already defined in MSVCRTD.lib

    编译错误: Error1error LNK2005: _CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR110D.dll)\libcmtd.l ...

  9. 数据库之存储过程-- 基于MySQL

    存储过程基本语法 create procedure procedure_name  [;number] [{@parameter data_type}[varying][=default][outpu ...

  10. Bot Framework:Activity类简明指南

    Bot Framework相关文档:https://docs.botframework.com/en-us/csharp/builder/sdkreference/attachments.html B ...