解题思路:

设两个变量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;
}

  

最新文章

  1. mvc中服务器端、客户端属性验证
  2. WOW.js – 在页面滚动时展现动感的元素动画效果
  3. WordPaster-Chrome浏览器控件安装方法
  4. sql server查询数据库中所有表的行数
  5. web服务器、应用服务器、http服务器区别
  6. UVa 10305 (拓扑排序) Ordering Tasks
  7. C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现
  8. sql语句常见错误
  9. 学无止境,学习AJAX(二)
  10. 自己封装的C#操作redis公共类
  11. uvalive 2326 - Moving Tables(区间覆盖问题)
  12. rune is alias of int32
  13. java基础系列--Exception异常处理
  14. 关于new,delete,malloc,free的一些总结
  15. oracle学习笔记(六) JDBC使用
  16. 自然人税收管理系统扣缴客户端Sqlite数据库有密码的,如何破解读取呢
  17. Win32 CMD批处理命令
  18. NSString 多行的写法和区别
  19. vscode忽略node_module
  20. UVa 1614 奇怪的股市

热门文章

  1. 去掉word文档两边的空白
  2. 075 Sort Colors 分类颜色
  3. openstack安装newton版本keyston部署(一)
  4. html5 03
  5. SpringBoot服务监控
  6. 日常-acm-三位数反转
  7. centos7中文显示为小方块~~啊啊啊 求大佬们解答
  8. js类型判别大合集
  9. Sql Server 查询今天,昨天,近七天....数据
  10. [转载]matlab图像处理为什么要归一化和如何归一化