Skip to content

Commit dcc30be

Browse files
author
fenghongxiang
committed
[Feature]提交若干题目
Signed-off-by: fenghongxiang <fenghongxiang@xiaomi.com>
1 parent 5a28755 commit dcc30be

File tree

119 files changed

+4133
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+4133
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
1. 采购方案
2+
通过的用户数0
3+
尝试过的用户数0
4+
用户总通过次数0
5+
用户总提交次数0
6+
题目难度Easy
7+
小力将 N 个零件的报价存于数组 nums。小力预算为 target,假定小力仅购买两个零件,要求购买零件的花费不超过预算,请问他有多少种采购方案。
8+
9+
注意:答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1
10+
11+
示例 1:
12+
13+
输入:nums = [2,5,3,5], target = 6
14+
15+
输出:1
16+
17+
解释:预算内仅能购买 nums[0] 与 nums[2]
18+
19+
示例 2:
20+
21+
输入:nums = [2,2,1,9], target = 10
22+
23+
输出:4
24+
25+
解释:符合预算的采购方案如下:
26+
nums[0] + nums[1] = 4
27+
nums[0] + nums[2] = 3
28+
nums[1] + nums[2] = 3
29+
nums[2] + nums[3] = 10
30+
31+
提示:
32+
33+
2 <= nums.length <= 10^5
34+
1 <= nums[i], target <= 10^5
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package Comp_spring_2021_1采购方案;
2+
3+
import java.util.Arrays;
4+
import java.util.HashMap;
5+
import java.util.Map;
6+
7+
class Solution {
8+
public int purchasePlans(int[] nums, int target) {
9+
Arrays.sort(nums);
10+
long count = 0;
11+
Map<Integer, Integer> map = new HashMap<>();
12+
for (int i = 0; i < nums.length; i++) {
13+
map.put(nums[i], i);
14+
}
15+
16+
for (int i = 0; i < nums.length; i++) {
17+
int indexValue = target - nums[i];
18+
Integer index = map.get(indexValue);
19+
if (index != null) {
20+
if (index > i) {
21+
count += index - i;
22+
}
23+
} else {
24+
for (int j = i + 1; j < nums.length; j++) {
25+
if (nums[i] + nums[j] <= target) {
26+
count++;
27+
} else
28+
break;
29+
}
30+
}
31+
}
32+
return (int) (count % 1000000007);
33+
}
34+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2. 乐团站位
2+
通过的用户数2
3+
尝试过的用户数4
4+
用户总通过次数2
5+
用户总提交次数5
6+
题目难度Easy
7+
某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。
8+
9+
为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以 1,2,...,9 循环重复排列。例如当 num = 5 时,站位如图所示
10+
11+
image.png
12+
13+
请返回位于场地坐标 [Xpos,Ypos] 的成员所持乐器编号。
14+
15+
示例 1:
16+
17+
输入:num = 3, Xpos = 0, Ypos = 2
18+
19+
输出:3
20+
21+
解释:
22+
image.png
23+
24+
示例 2:
25+
26+
输入:num = 4, Xpos = 1, Ypos = 2
27+
28+
输出:5
29+
30+
解释:
31+
image.png
32+
33+
提示:
34+
35+
1 <= num <= 10^9
36+
0 <= Xpos, Ypos < num
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package Comp_spring_2021_2乐团位置;
2+
3+
class Solution {
4+
5+
6+
public int orchestraLayout(int num, int xPos, int yPos) {
7+
if (num == 1) return 1;
8+
int circle = Math.min(
9+
Math.min(num - 1 - xPos, xPos),
10+
Math.min(num - 1 - yPos, yPos)
11+
);
12+
int p = ((num - 2) * 4 + 4 + (num - 2 - circle * 2) * 4 + 4) * circle / 2;
13+
int tmpCilr = 0;
14+
long tmpCircleCount = 4 + (num - 2) * 4L;
15+
long tmpCircleR = num;
16+
17+
long yue = 1;
18+
19+
while (tmpCilr < circle) {
20+
yue = (yue - 1 + tmpCircleCount) % 9 + 1;
21+
tmpCircleR -= 2;
22+
tmpCilr++;
23+
tmpCircleCount = 4 + (tmpCircleR - 2) * 4;
24+
}
25+
26+
int pos = 0;
27+
if ((num & 1) == 1) {
28+
29+
} else {
30+
31+
}
32+
33+
return 1;
34+
}
35+
}
36+
37+
class Test {
38+
public static void main(String[] args) {
39+
int i = new Solution().orchestraLayout(5, 2, 2);
40+
System.out.println(i);
41+
}
42+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
LCP 06. 拿硬币
2+
桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。
3+
4+
示例 1:
5+
6+
输入:[4,2,1]
7+
8+
输出:4
9+
10+
解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。
11+
12+
示例 2:
13+
14+
输入:[2,3,10]
15+
16+
输出:8
17+
18+
限制:
19+
20+
1 <= n <= 4
21+
1 <= coins[i] <= 10
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package LCP_0006_拿硬币;
2+
3+
class Solution {
4+
public int minCount(int[] coins) {
5+
int count = 0;
6+
for (int coin : coins) {
7+
count += (coin / 2 + ((coin & 1) == 1 ? 1 : 0));
8+
}
9+
return count;
10+
}
11+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
LCP 17. 速算机器人
2+
小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 x 和 y),请小扣说出计算指令:
3+
4+
"A" 运算:使 x = 2 * x + y;
5+
"B" 运算:使 y = 2 * y + x。
6+
在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。
7+
8+
示例 1:
9+
10+
输入:s = "AB"
11+
12+
输出:4
13+
14+
解释:
15+
经过一次 A 运算后,x = 2, y = 0。
16+
再经过一次 B 运算,x = 2, y = 2。
17+
最终 x 与 y 之和为 4。
18+
19+
提示:
20+
21+
0 <= s.length <= 10
22+
s 由 'A' 和 'B' 组成
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package LCP_0017_速算机器人;
2+
3+
class Solution {
4+
public int calculate(String s) {
5+
int x = 1;
6+
int y = 0;
7+
for (int i = 0; i < s.length(); i++) {
8+
if (s.charAt(i) == 'A') {
9+
x = 2 * x + y;
10+
} else {
11+
y = 2 * y + x;
12+
}
13+
}
14+
return x + y;
15+
}
16+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
### [面试题6\. 从尾到头打印链表](https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/)
2+
3+
Difficulty: **简单**
4+
5+
6+
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
7+
8+
**示例 1:**
9+
10+
```
11+
输入:head = [1,3,2]
12+
输出:[2,3,1]
13+
```
14+
15+
**限制:**
16+
17+
`0 <= 链表长度 <= 10000`
18+
19+
20+
#### Solution
21+
22+
Language: **Java**
23+
24+
```java
25+
26+
```
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package Meeting_0005_替换空格;
2+
3+
class Solution {
4+
public String replaceSpace(String s) {
5+
return s.replace(" ", "%20");
6+
}
7+
}

0 commit comments

Comments
 (0)