Skip to content

Commit 6d00468

Browse files
committed
update for week01 code
1 parent e81b9da commit 6d00468

8 files changed

Lines changed: 405 additions & 2 deletions

File tree

Week_01/Leet1.scala

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package Week_01
2+
3+
//给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
4+
//
5+
// 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
6+
//
7+
//
8+
//
9+
// 示例:
10+
//
11+
// 给定 nums = [2, 7, 11, 15], target = 9
12+
//
13+
//因为 nums[0] + nums[1] = 2 + 7 = 9
14+
//所以返回 [0, 1]
15+
//
16+
// Related Topics 数组 哈希表
17+
// 👍 9767 👎 0
18+
19+
20+
//leetcode submit region begin(Prohibit modification and deletion)
21+
object Leet1 {
22+
def twoSum(nums: Array[Int], target: Int): Array[Int] = {
23+
var arr = Array[Int]()
24+
for (i <- nums.indices; j <- i + 1 until nums.length) {
25+
if (nums(i) + nums(j) == target) {
26+
arr = arr :+ i
27+
arr = arr :+ j
28+
}
29+
}
30+
arr
31+
}
32+
}
33+
34+
//leetcode submit region end(Prohibit modification and deletion)
35+
36+

Week_01/Leet21.scala

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package Week_01
2+
3+
//将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
4+
//
5+
//
6+
//
7+
// 示例:
8+
//
9+
// 输入:1->2->4, 1->3->4
10+
//输出:1->1->2->3->4->4
11+
//
12+
// Related Topics 链表
13+
// 👍 1421 👎 0
14+
15+
16+
//leetcode submit region begin(Prohibit modification and deletion)
17+
/**
18+
* Definition for singly-linked list.
19+
* class ListNode(_x: Int = 0, _next: ListNode = null) {
20+
* var next: ListNode = _next
21+
* var x: Int = _x
22+
* }
23+
*/
24+
25+
class ListNode(_x: Int = 0, _next: ListNode = null) {
26+
var next: ListNode = _next
27+
var x: Int = _x
28+
}
29+
30+
object Leet21 {
31+
def mergeTwoLists(l1: ListNode, l2: ListNode): ListNode = {
32+
if (l1 == null) l2
33+
if (l2 == null) l1
34+
val newHead = new ListNode(-1)
35+
var newTail = newHead
36+
var head1 = l1
37+
var head2 = l2
38+
while (head1 != null && head2 != null) {
39+
if (head1.x < head2.x) {
40+
newTail.next = head1
41+
newTail = newTail.next
42+
head1 = head1.next
43+
} else {
44+
newTail.next = head2
45+
newTail = newTail.next
46+
head2 = head2.next
47+
}
48+
}
49+
if (head1 == null)
50+
newTail.next = head2
51+
else {
52+
newTail.next = head1
53+
}
54+
newHead.next
55+
}
56+
}
57+
58+
59+
//leetcode submit region end(Prohibit modification and deletion)

Week_01/Leet283.scala

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package Week_01
2+
3+
//给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
4+
//
5+
// 示例:
6+
//
7+
// 输入: [0,1,0,3,12]
8+
//输出: [1,3,12,0,0]
9+
//
10+
// 说明:
11+
//
12+
//
13+
// 必须在原数组上操作,不能拷贝额外的数组。
14+
// 尽量减少操作次数。
15+
//
16+
// Related Topics 数组 双指针
17+
// 👍 882 👎 0
18+
19+
20+
//leetcode submit region begin(Prohibit modification and deletion)
21+
object Leet283 {
22+
def moveZeroes(nums: Array[Int]): Unit = {
23+
var j = 0
24+
for (i <- nums.indices) {
25+
if (nums(i) != 0) {
26+
nums(j) = nums(i)
27+
if (j != i) {
28+
nums(i) = 0
29+
}
30+
j += 1
31+
}
32+
}
33+
}
34+
}
35+
36+
//leetcode submit region end(Prohibit modification and deletion)

Week_01/Leet42.scala

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package Week_01
2+
3+
//给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
4+
//
5+
//
6+
//
7+
// 示例 1:
8+
//
9+
//
10+
//
11+
//
12+
//输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
13+
//输出:6
14+
//解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
15+
//
16+
//
17+
// 示例 2:
18+
//
19+
//
20+
//输入:height = [4,2,0,3,2,5]
21+
//输出:9
22+
//
23+
//
24+
//
25+
//
26+
// 提示:
27+
//
28+
//
29+
// n == height.length
30+
// 0 <= n <= 3 * 104
31+
// 0 <= height[i] <= 105
32+
//
33+
// Related Topics 栈 数组 双指针
34+
// 👍 1850 👎 0
35+
36+
37+
//leetcode submit region begin(Prohibit modification and deletion)
38+
object Leet42 {
39+
def trap(height: Array[Int]): Int = {
40+
height.scanLeft(0)(math.max).slice(1, height.length).lazyZip(height.scanRight(0)(math.max).take(height.length)).map(math.min).lazyZip(height).map(_ - _).sum
41+
}
42+
}
43+
44+
//leetcode submit region end(Prohibit modification and deletion)
45+

Week_01/Leet66.scala

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package Week_01
2+
3+
4+
//验证给定的字符串是否可以解释为十进制数字。
5+
//
6+
// 例如:
7+
//
8+
// "0" => true
9+
//" 0.1 " => true
10+
//"abc" => false
11+
//"1 a" => false
12+
//"2e10" => true
13+
//" -90e3 " => true
14+
//" 1e" => false
15+
//"e3" => false
16+
//" 6e-1" => true
17+
//" 99e2.5 " => false
18+
//"53.5e93" => true
19+
//" --6 " => false
20+
//"-+3" => false
21+
//"95a54e53" => false
22+
//
23+
// 说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。这里给出一份可能存在于有效十进制数字中的字符列表:
24+
//
25+
//
26+
// 数字 0-9
27+
// 指数 - "e"
28+
// 正/负号 - "+"/"-"
29+
// 小数点 - "."
30+
//
31+
//
32+
// 当然,在输入中,这些字符的上下文也很重要。
33+
//
34+
// 更新于 2015-02-10:
35+
//C++函数的形式已经更新了。如果你仍然看见你的函数接收 const char * 类型的参数,请点击重载按钮重置你的代码。
36+
// Related Topics 数学 字符串
37+
// 👍 161 👎 0
38+
39+
40+
//leetcode submit region begin(Prohibit modification and deletion)
41+
object Leet66 {
42+
def plusOne(digits: Array[Int]): Array[Int] = {
43+
val queue = new scala.collection.mutable.Stack[Int]
44+
var sum = 1
45+
digits.reverse.foreach {
46+
x => {
47+
sum += x
48+
queue.push(sum % 10)
49+
sum /= 10
50+
}
51+
}
52+
if (sum != 0) {
53+
queue.push(sum)
54+
}
55+
queue.toArray
56+
}
57+
}
58+
59+
//leetcode submit region end(Prohibit modification and deletion)
60+

Week_01/Leet88.scala

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package Week_01
2+
3+
//给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
4+
//
5+
//
6+
//
7+
// 说明:
8+
//
9+
//
10+
// 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
11+
// 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
12+
//
13+
//
14+
//
15+
//
16+
// 示例:
17+
//
18+
//
19+
//输入:
20+
//nums1 = [1,2,3,0,0,0], m = 3
21+
//nums2 = [2,5,6], n = 3
22+
//
23+
//输出:[1,2,2,3,5,6]
24+
//
25+
//
26+
//
27+
// 提示:
28+
//
29+
//
30+
// -10^9 <= nums1[i], nums2[i] <= 10^9
31+
// nums1.length == m + n
32+
// nums2.length == n
33+
//
34+
// Related Topics 数组 双指针
35+
// 👍 704 👎 0
36+
37+
38+
//leetcode submit region begin(Prohibit modification and deletion)
39+
object Leet88 {
40+
def merge(nums1: Array[Int], m: Int, nums2: Array[Int], n: Int): Unit = {
41+
val tmp = Array.concat(nums1.dropRight(nums1.length - m), nums2.dropRight(nums2.length - n)).sorted
42+
for (i <- tmp.indices) {
43+
nums1(i) = tmp(i)
44+
}
45+
}
46+
}
47+
48+
//leetcode submit region end(Prohibit modification and deletion)
49+

0 commit comments

Comments
 (0)