解题思路:

设两个变量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. canvas前端压缩图片

    参考网上的用法,下面是利用canvas进行的图片压缩 <!DOCTYPE html> <html> <head> <meta charset="ut ...

  2. kindeditor编辑器和图片上传独立分开的配置细节

    关于kindeditor编辑器上传按钮的异步加载最关键的部署问题,它的上传图片的组件都已经封装得很好了的,只需要监听到页面按钮的点击事件给编辑器对象传递一些对应的初始化参数即可显示图片上传的弹窗实现异 ...

  3. Jquery3

    动画 动画动画效果一:show(时间),hide(时间)说明:时间的单位为毫秒方法toggle(时间):使用动画切换显示与隐藏动画效果二:slideDown(时间),slideUp(时间)切换:sli ...

  4. swift3.0 项目引导页

    项目引导页并不难,使用 UICollectionView就可以完成, 1.首先获取应用程序的版本号,并存入本地,每次有新版本号,和存入本地的版本号,相比较 fileprivate func setup ...

  5. AJPFX浅析Java内存结构

    1. Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置2. MethodArea(方法区域):类的信息及静态变量. 对应是Permanet Generation, 通过-XX:PermSi ...

  6. 获取url的参数值

    var url=location.search; //获取url中从?开始的所有字符 var  theRequest=new Object();//定义一个对象来存放url中的参数 if( url.i ...

  7. HDU 2899Strange fuction(模拟退火)

    题意 题目链接 求 $F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)$的最小值 Sol 强上模拟退火,注意eps要开大! /* */ ...

  8. 【Unity3D】魔鬼与牧师游戏记录——MVC架构

    Priests and Devils是一款益智类的小游戏,需要在规定的时间内帮助牧师和魔鬼都安全过河.河边有三个魔鬼和三个牧师,他们都想过河,但河上只有一条船,这艘船每次只能搭载两个,而且必须有一个人 ...

  9. Android 模仿苹果虚拟悬浮按钮(自动靠边、可浮现任何界面上)

    由于最近小蔡的手机音量键坏了,调节音量有点麻烦,突发奇想,想自己实现一个快捷键来调节音量.在忘上参考了一些代码,总结出一般本章,分享给大家. 首先 按钮要想实现悬浮在任何界面,那么必须是要写在服务里面 ...

  10. 【转】Java Cipher类 DES算法(加密与解密)

    Java Cipher类 DES算法(加密与解密) 1.加密解密类 import java.security.*; import javax.crypto.*; import java.io.*; / ...