解题思路:

设两个变量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. myeclipse 最佳设置

    http://www.cnblogs.com/wuyifu/p/3593035.html

  2. GDPR(Cookie处理)

    GDPR(Cookie处理) https://www.cnblogs.com/GuZhenYin/p/9154447.html 前言 时间一晃 ASP.NET Core已经迭代到2.1版本了. 迫不及 ...

  3. 爬虫(ProxyHandler)——代理

    工具:python3 步骤: 1)使用ProxyHandler()构建httpproxy_handler对象 2)使用build_opener(httpproxy_handler)构建opener 3 ...

  4. Ubuntu 下修改Tomcat和Jetty默认的JDK和初始内存

    修改/etc/default/tomcat  或者  /etc/default/jetty   文件 中的 JAVA_HOME 和 JAVA_OPTS

  5. Zeppelin的入门使用系列之使用Zeppelin来创建临时表UserTable(三)

    不多说,直接上干货! 前期博客 Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二) 我们必须要先使用Spark 语句创建临时表UserTable,后续才能使用Spark SQ ...

  6. HangFire 定时任务

    https://www.cnblogs.com/ecin/p/6201262.html#%E5%9F%BA%E4%BA%8E%E9%98%9F%E5%88%97%E7%9A%84%E4%BB%BB%E ...

  7. nmap -sT

    将与目标端口进行三次握手,尝试建立连接,如果连接成功,则端口开放,慢,且会被目录主机记录

  8. mysql主从设置windows

    MySQL 主从复制是其最重要的功能之一.主从复制是一台服务器充当主服务器,另一台或多台服务器充当从服务器,主机自动复制到从机.对于多级复制,数据服务器即可充当主机,也可充当从机.MySQL 复制的基 ...

  9. COGS 2104. [NOIP2015]神奇的幻方

    ★   输入文件:2015magic.in   输出文件:2015magic.out   简单对比时间限制:1 s   内存限制:256 MB 模拟 一开始数组开小了.. 屠龙宝刀点击就送 #incl ...

  10. 使用JPA + Eclipselink操作PostgreSQL数据库

    首先确保您已经安装了PostgreSQL.您可以参考我这篇文章PostgreSQL扫盲教程. 使用Eclipse创建一个新的JPA project: Platform选择EclipseLink,作为J ...