当前位置: 首页 > news >正文

LeetCode -- Summary Ranges

题目描述:


Given a sorted integer array without duplicates, return the summary of its ranges.


For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"].


Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.


就是给定一个已排序的数组,返回一个字符串数组,每个字符串表示为元素区间的合并。


本题是典型的two pointer 问题。


思路:
一次遍历,使用two pointer方法,from 表示区间的起始元素,to表示区间的结束元素。
如果相邻元素nums[i]和nums[i-1]差值为1,区间范围+1:to = nums[i] ,注意最后元素的处理。


否则:
如果from不等于to:
将range = [from,to]添加到解集中,并更新from的位置。
如果from和to相等:
将range=from(或to)添加到解集
注意末尾元素的判断(如果已打末尾,添加末尾元素)


实现代码:





public class Solution {
    public IList<string> SummaryRanges(int[] nums) {
        if(nums.Length == 0){
	    	return new List<string>();
    	}
    	
    	if(nums.Length == 1){
    		return new List<string>(){nums[0].ToString()};
    	}
    	
    	var from = nums[0];
    	var to = nums[0];
    	var ret = new List<string>();
    	for(var i = 1 ;i < nums.Length; i++){
    		if(nums[i] - nums[i-1] == 1){
    			to = nums[i];
    			if(i == nums.Length - 1){
    				ret.Add(string.Format("{0}->{1}", from , to));	
    			}
    		}
    		else{
    			if(from != to){
    				ret.Add(string.Format("{0}->{1}", from , to));	
    				if(i == nums.Length - 1 && to != nums[nums.Length - 1]){
    					ret.Add(nums[i].ToString());
    				}
    			}
    			else{
    				ret.Add(from.ToString());
    				if(i == nums.Length - 1){
    					ret.Add(nums[i].ToString());
    				}
    			}
    			from = nums[i];
    			to = nums[i];
    		}
    	}
    	
    	return ret;
    }
}


相关文章:

  • ArcGIS Server Java ADF 案例教程 19
  • ArcGIS Server Java ADF 案例教程 20
  • LeetCode -- Unique Paths
  • 警惕手机流氓软件的流行
  • LeetCode -- Combination Sum II
  • 学习百度、腾讯如何把产品做到极致(转载)
  • LeetCode -- Edit Distance
  • Leetcode -- Find Minimum in Rotated Sorted Array
  • SQL2005CLR函数扩展-树的结构
  • LeetCode -- Longest Consecutive Sequence
  • Flex与.NET互操作(八):使用FluorineFx网关实现远程访问
  • LeetCode -- Missing Number
  • [Windows编程] Windows 7 对多核的支持
  • LeetCode -- Palindrome Linked List
  • SSH客户端设置环境变量
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 4个实用的微服务测试策略
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6 学习笔记(一)let,const和解构赋值
  • export和import的用法总结
  • GraphQL学习过程应该是这样的
  • Java基本数据类型之Number
  • Meteor的表单提交:Form
  • PermissionScope Swift4 兼容问题
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • spring boot 整合mybatis 无法输出sql的问题
  • vue总结
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 构建二叉树进行数值数组的去重及优化
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 聊聊directory traversal attack
  • 说说动画卡顿的解决方案
  • 微信开源mars源码分析1—上层samples分析
  • 问题之ssh中Host key verification failed的解决
  • 一个项目push到多个远程Git仓库
  • 一起参Ember.js讨论、问答社区。
  • 源码安装memcached和php memcache扩展
  • ionic入门之数据绑定显示-1
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​香农与信息论三大定律
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $.ajax()
  • (1)Android开发优化---------UI优化
  • (20050108)又读《平凡的世界》
  • (java)关于Thread的挂起和恢复
  • (python)数据结构---字典
  • (分布式缓存)Redis分片集群
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (十六)一篇文章学会Java的常用API
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (实战篇)如何缓存数据
  • (四) 虚拟摄像头vivi体验