mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 15:45:40 +08:00
Merge branch 'youngyangyang04:master' into master
This commit is contained in:
@ -358,6 +358,58 @@ func generateMatrix(_ n: Int) -> [[Int]] {
|
||||
}
|
||||
```
|
||||
|
||||
Rust:
|
||||
|
||||
```rust
|
||||
impl Solution {
|
||||
pub fn generate_matrix(n: i32) -> Vec<Vec<i32>> {
|
||||
let mut res = vec![vec![0; n as usize]; n as usize];
|
||||
let (mut startX, mut startY, mut offset): (usize, usize, usize) = (0, 0, 1);
|
||||
let mut loopIdx = n/2;
|
||||
let mid: usize = loopIdx as usize;
|
||||
let mut count = 1;
|
||||
let (mut i, mut j): (usize, usize) = (0, 0);
|
||||
while loopIdx > 0 {
|
||||
i = startX;
|
||||
j = startY;
|
||||
|
||||
while j < (startY + (n as usize) - offset) {
|
||||
res[i][j] = count;
|
||||
count += 1;
|
||||
j += 1;
|
||||
}
|
||||
|
||||
while i < (startX + (n as usize) - offset) {
|
||||
res[i][j] = count;
|
||||
count += 1;
|
||||
i += 1;
|
||||
}
|
||||
|
||||
while j > startY {
|
||||
res[i][j] = count;
|
||||
count += 1;
|
||||
j -= 1;
|
||||
}
|
||||
|
||||
while i > startX {
|
||||
res[i][j] = count;
|
||||
count += 1;
|
||||
i -= 1;
|
||||
}
|
||||
|
||||
startX += 1;
|
||||
startY += 1;
|
||||
offset += 2;
|
||||
loopIdx -= 1;
|
||||
}
|
||||
|
||||
if(n % 2 == 1) {
|
||||
res[mid][mid] = count;
|
||||
}
|
||||
res
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
-----------------------
|
||||
|
@ -97,6 +97,23 @@ class Solution {
|
||||
## Go
|
||||
|
||||
```go
|
||||
func isIsomorphic(s string, t string) bool {
|
||||
map1 := make(map[byte]byte)
|
||||
map2 := make(map[byte]byte)
|
||||
for i := range s {
|
||||
if _, ok := map1[s[i]]; !ok {
|
||||
map1[s[i]] = t[i] // map1保存 s[i] 到 t[j]的映射
|
||||
}
|
||||
if _, ok := map2[t[i]]; !ok {
|
||||
map2[t[i]] = s[i] // map2保存 t[i] 到 s[j]的映射
|
||||
}
|
||||
// 无法映射,返回 false
|
||||
if (map1[s[i]] != t[i]) || (map2[t[i]] != s[i]) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
```
|
||||
|
||||
## JavaScript
|
||||
|
@ -192,6 +192,22 @@ var intersection = function(nums1, nums2) {
|
||||
};
|
||||
```
|
||||
|
||||
Swift:
|
||||
```swift
|
||||
func intersection(_ nums1: [Int], _ nums2: [Int]) -> [Int] {
|
||||
var set1 = Set<Int>()
|
||||
var set2 = Set<Int>()
|
||||
for num in nums1 {
|
||||
set1.insert(num)
|
||||
}
|
||||
for num in nums2 {
|
||||
if set1.contains(num) {
|
||||
set2.insert(num)
|
||||
}
|
||||
}
|
||||
return Array(set2)
|
||||
}
|
||||
```
|
||||
|
||||
## 相关题目
|
||||
|
||||
|
@ -254,6 +254,28 @@ var reverseStr = function(s, k) {
|
||||
|
||||
```
|
||||
|
||||
Swift:
|
||||
|
||||
```swift
|
||||
func reverseStr(_ s: String, _ k: Int) -> String {
|
||||
var ch = Array(s)
|
||||
|
||||
for i in stride(from: 0, to: ch.count, by: 2 * k) {
|
||||
var left = i
|
||||
var right = min(s.count - 1, left + k - 1)
|
||||
|
||||
while left < right {
|
||||
(ch[left], ch[right]) = (ch[right], ch[left])
|
||||
left += 1
|
||||
right -= 1
|
||||
}
|
||||
}
|
||||
return String(ch)
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
|
@ -215,7 +215,7 @@ class TreeNode:
|
||||
```
|
||||
|
||||
Go:
|
||||
```
|
||||
```go
|
||||
type TreeNode struct {
|
||||
Val int
|
||||
Left *TreeNode
|
||||
@ -224,7 +224,7 @@ type TreeNode struct {
|
||||
```
|
||||
|
||||
JavaScript:
|
||||
```
|
||||
```javascript
|
||||
function TreeNode(val, left, right) {
|
||||
this.val = (val===undefined ? 0 : val)
|
||||
this.left = (left===undefined ? null : left)
|
||||
|
@ -264,6 +264,49 @@ javaScript:
|
||||
};
|
||||
```
|
||||
|
||||
Swift:
|
||||
|
||||
```swift
|
||||
func replaceSpace(_ s: String) -> String {
|
||||
var strArr = Array(s)
|
||||
var count = 0
|
||||
|
||||
// 统计空格的个数
|
||||
for i in strArr {
|
||||
if i == " " {
|
||||
count += 1
|
||||
}
|
||||
}
|
||||
// left 指向旧数组的最后一个元素
|
||||
var left = strArr.count - 1
|
||||
// right 指向扩容后数组的最后一个元素(这里还没对数组进行实际上的扩容)
|
||||
var right = strArr.count + count * 2 - 1
|
||||
|
||||
// 实际对数组扩容
|
||||
for _ in 0..<(count * 2) {
|
||||
strArr.append(" ")
|
||||
}
|
||||
|
||||
while left < right {
|
||||
if strArr[left] == " " {
|
||||
strArr[right] = "0"
|
||||
strArr[right - 1] = "2"
|
||||
strArr[right - 2] = "%"
|
||||
left -= 1
|
||||
right -= 3
|
||||
} else {
|
||||
strArr[right] = strArr[left]
|
||||
left -= 1
|
||||
right -= 1
|
||||
}
|
||||
}
|
||||
|
||||
return String(strArr)
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
|
Reference in New Issue
Block a user