博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode(二)
阅读量:6294 次
发布时间:2019-06-22

本文共 2433 字,大约阅读时间需要 8 分钟。

Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example, Given input array A = [1,1,2],

Your function should return length = 2, and A is now [1,2].

题目要求是不能申请额外的空间,返回修改后的数组长度,大概代码如下:

//STL标注模板库函数unique(),删除相邻的相同的元素;int removeDuplicates(vector
& nums) { return distance(nums.begin(), unique(nums.begin(), nums.end()));}//不使用标准模板库函数顺序循环判断int removeDuplicates(vector
& nums) { if (nums.empty()) return 0; int count = 0; //返回长度 for (int i = 1; i < nums.size(); i++) { if (nums[count] != nums[i]) { //相邻元素不相同,判断下两个 nums[++count] = nums[i]; } }    return count + 1;}

Remove Duplicates from Sorted Array II

Follow up for ”Remove Duplicates”: What if duplicates are allowed at most twice?

For example, Given sorted array A = [1,1,1,2,2,3],
Your function should return length = 5, and A is now [1,1,2,2,3]

每个元素最多不能超过两次,返回数组的长度。

int removeDuplicates(vector
& nums) { if (nums.size() <= 2) return nums.size(); int count = 2; //至少长度为2 for (int i = 2; i < nums.size(); i++) { if (nums[i] != nums[count - 2]) { //相邻第二个是否相同 nums[++count] = nums[i]; } } return count;}

Search in Rotated Sorted Array

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.

前提是已经排序的数组经过其中某个值翻转,分为两部分相同的值。二分查找即可:

int binSearch(vector
nums, int target) { int first = 0, last = nums.size(); while (first != last) { int mid = first + (first + last) / 2; if (nums[mid] = target) //target恰好在中间。 return mid; if (nums[first] <= nums[mid]) { if (nums[first] < target && target < nums[mid]) //前半部分 last = mid; else first = mid + 1; } else { if (nums[mid] < target && target < nums[last]) { //后半部分 first = mid + 1; } else last = mid + 1; } }}

 

转载于:https://www.cnblogs.com/longfellow/p/6536183.html

你可能感兴趣的文章
python range()内建函数
查看>>
Git 远程分支的pull与push
查看>>
tomcat误报
查看>>
Android开发笔记——常见BUG类型之内存泄露与线程安全
查看>>
oracle active data guard概述
查看>>
网络管理员基础
查看>>
myeclipse文件目录自动定位(右编辑界面点击 左边Package Explorer导航自动定位)...
查看>>
React源码学习——ReactClass
查看>>
电脑爱好者GHOSTWIN764位V4.0
查看>>
MYSQL——常用运算符和函数
查看>>
JS获取上传文件的大小
查看>>
Shell脚本调用mysql语句
查看>>
远程连接服务器的方法:
查看>>
docker入门
查看>>
linux下如何判断oracle数据库tns是否设置正常
查看>>
dell物理服务器硬件磁盘监控
查看>>
sqlserver的事务回滚和设置事务保存点操作
查看>>
https搭建(openssl)
查看>>
CISCO上ADSL配置的方法
查看>>
队列实现qq解密
查看>>