みなさん、こんにちは。私は
方圆
持っていませんが、慣れています
質問番号
ソードはオファー57-IIを指します。合計がsである連続した正の数のシーケンス
- アイデア:この種の順序付けされた配列の場合、最初にダブルポインターとスライディングウィンドウについて考えます。
class Solution {
public int[][] findContinuousSequence(int target) {
int i = 1;
int j = 1;
int sum = 0;
List<int[]> res = new ArrayList<>();
while(i <= target / 2){
if(sum < target){
sum += j;
j++;
}else if(sum > target){
sum -= i;
i++;
}else{
int[] arr = new int[j - i];
for(int k = i;k < j;k++){
arr[k - i] = k;
}
res.add(arr);
sum -= i;
i++;
}
}
return res.toArray(new int[res.size()][]);
}
}
Sword Finger Offer 58-I。単語の順序を逆にする
class Solution {
public String reverseWords(String s) {
s = s.trim();
int i = s.length() - 1,j = i;
StringBuilder res = new StringBuilder();
while(i >= 0){
while(i >= 0 && s.charAt(i) != ' ')
i--;//将i指向单词前的空格
res.append(s.substring(i + 1,j + 1) + " ");
while(i >= 0 && s.charAt(i) == ' ')
i--;//去掉两单词间多余的空格
j = i;
}
//去掉尾部多余的一个空格
return res.toString().trim();
}
}
ソードフィンガーオファー58-II。ストリングを左に回転
- アイデア:2つのセクションにカット
class Solution {
public String reverseLeftWords(String s, int n) {
return s.substring(n,s.length()) + s.substring(0,n);
}
}
ソードフィンガーオファー59-I。最大スライディングウィンドウ
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
if(nums == null || k == 0) return new int[0];
int[] res = new int[nums.length - k + 1];
int i = 0,j = k - 1;
int n = 0;
while(j < nums.length){
int flag = Integer.MIN_VALUE;
for(int a = 0;a < k;a++)
flag = Math.max(flag,nums[i + a]);
i++;
j++;
res[n++] = flag;
}
return res;
}
}
剣はオファー59-IIを指します。キューの最大値
class MaxQueue {
private Queue<Integer> queue;
private LinkedList<Integer> max;
public MaxQueue() {
queue = new LinkedList<>();
max = new LinkedList<>();
}
public int max_value() {
return max.size() != 0 ? max.getFirst() : -1;
}
public void push_back(int value) {
queue.add(value);
//这里是while循环条件!!!
while(max.size() != 0 && max.getLast() < value)
max.removeLast();
max.add(value);
}
public int pop_front() {
if(max.size() != 0 && max.getFirst().equals(queue.peek()))
max.removeFirst();
return queue.size() != 0 ? queue.poll() : -1;
}
}
いい加減にして!