add
This commit is contained in:
parent
85737c7e8d
commit
4984a2b597
53
5.leetcode/src/com/fanxb/common/Q33.java
Normal file
53
5.leetcode/src/com/fanxb/common/Q33.java
Normal file
@ -0,0 +1,53 @@
|
||||
package com.fanxb.common;
|
||||
|
||||
public class Q33 {
|
||||
|
||||
|
||||
public int search(int[] nums, int target) {
|
||||
int n = nums.length;
|
||||
if (n == 1) return nums[0] == target ? 0 : -1;
|
||||
int l = 0, r = n - 1;
|
||||
while (l < r) {
|
||||
boolean s = nums[l] < nums[r];
|
||||
int m = (l + r) / 2;
|
||||
if (nums[m] == target) {
|
||||
return m;
|
||||
} else {
|
||||
if (nums[m] >= nums[0]) {
|
||||
//说明m落在左边的升序
|
||||
if (nums[m] < target) {
|
||||
if (l == m) l++;
|
||||
else l = m;
|
||||
} else {
|
||||
if (!s && nums[l] > target) {
|
||||
//说明target在右边的升序里
|
||||
if (l == m) l++;
|
||||
else l = m;
|
||||
} else {
|
||||
r = m;
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
//m落在右边的升序
|
||||
if (nums[m] > target) {
|
||||
r = m;
|
||||
} else {
|
||||
if (s || nums[l] > target) {
|
||||
//说明target在右边的升序里
|
||||
if (l == m) l++;
|
||||
else l = m;
|
||||
} else {
|
||||
r = m;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return nums[l] == target ? l : -1;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(new Q33().search(new int[]{1, 3}, 0));
|
||||
}
|
||||
}
|
@ -1,10 +1,5 @@
|
||||
package com.fanxb.common;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA
|
||||
*
|
||||
@ -12,55 +7,30 @@ import java.util.List;
|
||||
* Date: 2020/6/11 9:56
|
||||
*/
|
||||
public class Q68 {
|
||||
public List<String> fullJustify(String[] words, int maxWidth) {
|
||||
List<String> res = new ArrayList<>();
|
||||
List<String> temp = new ArrayList<>();
|
||||
int size = words.length, lengthCount = 0, usedWidth = 0;
|
||||
for (int i = 0; i < size; i++) {
|
||||
lengthCount += words[i].length() + 1;
|
||||
if (lengthCount > maxWidth + 1) {
|
||||
//说明放不下了
|
||||
res.add(dealOne(temp, maxWidth, usedWidth, false));
|
||||
temp.clear();
|
||||
usedWidth = 0;
|
||||
lengthCount = words[i].length() + 1;
|
||||
}
|
||||
temp.add(words[i]);
|
||||
usedWidth += words[i].length();
|
||||
}
|
||||
if (!temp.isEmpty()) {
|
||||
res.add(dealOne(temp, maxWidth, usedWidth, true));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
private String dealOne(List<String> temp, int maxWidth, int usedWidth, boolean lastOne) {
|
||||
StringBuilder res = new StringBuilder();
|
||||
res.append(temp.get(0));
|
||||
int size = temp.size();
|
||||
if (size == 1) return res.append(" ".repeat(maxWidth - usedWidth)).toString();
|
||||
if (lastOne) {
|
||||
for (int i = 1; i < size; i++) res.append(' ').append(temp.get(i));
|
||||
return res.append(" ".repeat(maxWidth - res.length())).toString();
|
||||
} else {
|
||||
//每个间隙的长度
|
||||
int everyWidth = (maxWidth - usedWidth) / (size - 1);
|
||||
//前几个间隙需要加一个空格
|
||||
int needPlusCount = (maxWidth - usedWidth) % (size - 1);
|
||||
for (int i = 1; i < size; i++) {
|
||||
res.append(" ".repeat(everyWidth));
|
||||
if (needPlusCount > 0) {
|
||||
res.append(' ');
|
||||
needPlusCount--;
|
||||
public int searchInsert(int[] nums, int target) {
|
||||
int l = 0, r = nums.length - 1;
|
||||
while (l < r) {
|
||||
int m = (l + r) / 2;
|
||||
if (nums[m] > target) {
|
||||
if (r == m) {
|
||||
l++;
|
||||
} else {
|
||||
r = m;
|
||||
}
|
||||
} else if (nums[m] == target) {
|
||||
return m;
|
||||
} else {
|
||||
if (l == m) {
|
||||
l++;
|
||||
} else {
|
||||
l = m;
|
||||
}
|
||||
res.append(temp.get(i));
|
||||
}
|
||||
}
|
||||
return res.toString();
|
||||
return nums[l] < target ? l + 1 : l;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Q68 q68 = new Q68();
|
||||
System.out.println(q68.fullJustify(new String[]{"This", "is", "an", "example", "of", "text", "justification."}, 16).toString());
|
||||
System.out.println(new Q68().searchInsert(new int[]{1, 3, 5, 6}, 5));
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user