mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge pull request #1321 from wzqwtt/patch07
添加(0035.搜索插入位置、0704.二分查找、0034.在排序数组中查找元素的第一个和最后一个位、0027.移除元素)Scala版本
This commit is contained in:
@ -328,6 +328,20 @@ int removeElement(int* nums, int numsSize, int val){
|
|||||||
return slow;
|
return slow;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Scala:
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def removeElement(nums: Array[Int], `val`: Int): Int = {
|
||||||
|
var slow = 0
|
||||||
|
for (fast <- 0 until nums.length) {
|
||||||
|
if (`val` != nums(fast)) {
|
||||||
|
nums(slow) = nums(fast)
|
||||||
|
slow += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
slow
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
@ -480,7 +480,52 @@ var searchRange = function(nums, target) {
|
|||||||
return [-1, -1];
|
return [-1, -1];
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
### Scala
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def searchRange(nums: Array[Int], target: Int): Array[Int] = {
|
||||||
|
var left = getLeftBorder(nums, target)
|
||||||
|
var right = getRightBorder(nums, target)
|
||||||
|
if (left == -2 || right == -2) return Array(-1, -1)
|
||||||
|
if (right - left > 1) return Array(left + 1, right - 1)
|
||||||
|
Array(-1, -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 寻找左边界
|
||||||
|
def getLeftBorder(nums: Array[Int], target: Int): Int = {
|
||||||
|
var leftBorder = -2
|
||||||
|
var left = 0
|
||||||
|
var right = nums.length - 1
|
||||||
|
while (left <= right) {
|
||||||
|
var mid = left + (right - left) / 2
|
||||||
|
if (nums(mid) >= target) {
|
||||||
|
right = mid - 1
|
||||||
|
leftBorder = right
|
||||||
|
} else {
|
||||||
|
left = mid + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
leftBorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// 寻找右边界
|
||||||
|
def getRightBorder(nums: Array[Int], target: Int): Int = {
|
||||||
|
var rightBorder = -2
|
||||||
|
var left = 0
|
||||||
|
var right = nums.length - 1
|
||||||
|
while (left <= right) {
|
||||||
|
var mid = left + (right - left) / 2
|
||||||
|
if (nums(mid) <= target) {
|
||||||
|
left = mid + 1
|
||||||
|
rightBorder = left
|
||||||
|
} else {
|
||||||
|
right = mid - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rightBorder
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
@ -316,7 +316,26 @@ func searchInsert(_ nums: [Int], _ target: Int) -> Int {
|
|||||||
return right + 1
|
return right + 1
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
### Scala
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def searchInsert(nums: Array[Int], target: Int): Int = {
|
||||||
|
var left = 0
|
||||||
|
var right = nums.length - 1
|
||||||
|
while (left <= right) {
|
||||||
|
var mid = left + (right - left) / 2
|
||||||
|
if (target == nums(mid)) {
|
||||||
|
return mid
|
||||||
|
} else if (target > nums(mid)) {
|
||||||
|
left = mid + 1
|
||||||
|
} else {
|
||||||
|
right = mid - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
right + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### PHP
|
### PHP
|
||||||
|
|
||||||
|
@ -610,7 +610,48 @@ public class Solution{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
**Scala:**
|
||||||
|
|
||||||
|
(版本一)左闭右闭区间
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def search(nums: Array[Int], target: Int): Int = {
|
||||||
|
var left = 0
|
||||||
|
var right = nums.length - 1
|
||||||
|
while (left <= right) {
|
||||||
|
var mid = left + ((right - left) / 2)
|
||||||
|
if (target == nums(mid)) {
|
||||||
|
return mid
|
||||||
|
} else if (target < nums(mid)) {
|
||||||
|
right = mid - 1
|
||||||
|
} else {
|
||||||
|
left = mid + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
(版本二)左闭右开区间
|
||||||
|
```scala
|
||||||
|
object Solution {
|
||||||
|
def search(nums: Array[Int], target: Int): Int = {
|
||||||
|
var left = 0
|
||||||
|
var right = nums.length
|
||||||
|
while (left < right) {
|
||||||
|
val mid = left + (right - left) / 2
|
||||||
|
if (target == nums(mid)) {
|
||||||
|
return mid
|
||||||
|
} else if (target < nums(mid)) {
|
||||||
|
right = mid
|
||||||
|
} else {
|
||||||
|
left = mid + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>
|
||||||
|
Reference in New Issue
Block a user