力扣双周52
This commit is contained in:
parent
8d547c7f00
commit
92d659f115
118
src/main/java/com/code/leet/doubleWeek/SolutionD52.java
Normal file
118
src/main/java/com/code/leet/doubleWeek/SolutionD52.java
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
package com.code.leet.doubleWeek;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: 轩辕龙儿
|
||||||
|
* @Date: 2021/5/15 22:25
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
public class SolutionD52 {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SolutionD52 solution = new SolutionD52();
|
||||||
|
solution.rotateTheBox(new char[][]{{'*', '#', '*', '.', '.', '.', '#', '.', '*', '.'}});
|
||||||
|
}
|
||||||
|
|
||||||
|
public String sortSentence(String s) {
|
||||||
|
String[] strs = s.split(" ");
|
||||||
|
Map<Integer, String> map = new HashMap<>();
|
||||||
|
for (String str : strs) {
|
||||||
|
int num = Integer.parseInt(str.substring(str.length() - 1));
|
||||||
|
str = str.substring(0, str.length() - 1) + " ";
|
||||||
|
map.put(num, str);
|
||||||
|
}
|
||||||
|
s = "";
|
||||||
|
for (int i = 1; i < 10; i++) {
|
||||||
|
if (map.containsKey(i)) {
|
||||||
|
s += map.get(i);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s.substring(0, s.length() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] memLeak(int memory1, int memory2) {
|
||||||
|
boolean isOne = memory1 >= memory2;
|
||||||
|
int i = 1;
|
||||||
|
while (true) {
|
||||||
|
if (isOne) {
|
||||||
|
if (memory1 < i) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
memory1 -= i;
|
||||||
|
} else {
|
||||||
|
if (memory2 < i) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
memory2 -= i;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
isOne = memory1 >= memory2;
|
||||||
|
}
|
||||||
|
return new int[]{i, memory1, memory2};
|
||||||
|
}
|
||||||
|
|
||||||
|
public char[][] rotateTheBox(char[][] box) {
|
||||||
|
char[][] newBox = new char[box[0].length][box.length];
|
||||||
|
Stack<Character> stack = new Stack<>();
|
||||||
|
for (int i = 0; i < box.length; i++) {
|
||||||
|
int del = 0;
|
||||||
|
boolean isStone = false;
|
||||||
|
for (int j = 0; j < box[i].length; j++) {
|
||||||
|
if (box[i][j] == '.' && !stack.isEmpty() && stack.peek() == '#') {
|
||||||
|
if (isStone) {
|
||||||
|
del++;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (box[i][j] == '*' || j == box[i].length - 1) {
|
||||||
|
if (del > 0) {
|
||||||
|
Stack<Character> temp = new Stack<>();
|
||||||
|
while (!stack.isEmpty() && stack.peek() != '*') {
|
||||||
|
temp.push(stack.pop());
|
||||||
|
}
|
||||||
|
for (int l = 0; l < del; l++) {
|
||||||
|
stack.push('.');
|
||||||
|
}
|
||||||
|
del = 0;
|
||||||
|
while (!temp.isEmpty()) {
|
||||||
|
stack.push(temp.pop());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isStone = true;
|
||||||
|
}
|
||||||
|
stack.push(box[i][j]);
|
||||||
|
}
|
||||||
|
int count = box[0].length - 1;
|
||||||
|
while (!stack.isEmpty()) {
|
||||||
|
newBox[count][box.length - 1 - i] = stack.pop();
|
||||||
|
count--;
|
||||||
|
}
|
||||||
|
for (int j = count; j >= 0; j--) {
|
||||||
|
newBox[j][box.length - 1 - i] = '.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int sumOfFlooredPairs(int[] nums) {
|
||||||
|
Arrays.sort(nums);
|
||||||
|
long sum = 0;
|
||||||
|
long temp = 0;
|
||||||
|
for (int i = 0; i < nums.length; i++) {
|
||||||
|
if (i > 0 && nums[i] == nums[i - 1]) {
|
||||||
|
sum += temp;
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
temp = 0;
|
||||||
|
}
|
||||||
|
for (int j = i; j < nums.length; j++) {
|
||||||
|
int num = nums[j] / nums[i];
|
||||||
|
sum += num;
|
||||||
|
temp += num;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (int) (sum % 1000000007);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user