Zoom——Android客户端开发笔试编程题
public class Solution {
/**
* 132匹配,统计有多少个这样的模式
* 通过100%
* @param nums
* @return
*/
public int find132Pattern (int[] nums) {
// write code here
int len = nums.length;
int count = 0;
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
for (int k = j + 1; k < len; k++) {
if(nums[i] < nums[j] && nums[j] > nums[k] && nums[i] < nums[k]){
count++;
}
}
}
}
return count;
}
/**
* 给定一个数组nums,给定窗口大小,和每次移动的step,
* 求每个窗口中的最大值
* 通过60%,不知道为什么通过不了
* @param nums 数组
* @param windowSize 窗口大小
* @param step 跳步
* @return
*/
public int[] slideWindow (int[] nums, int windowSize, int step) {
// write code here
if(nums == null || nums.length == 0)
return new int[0];
if(nums.length == 1) return nums;
int len = nums.length;
List<Integer> list = new ArrayList<>();
for (int i = 0; i < len; i += step) {
int maxVal = nums[i];
for (int j = i; j < len && j < windowSize + i; j++) {
maxVal = Math.max(maxVal, nums[j]);
}
list.add(maxVal);
}
int[] res = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}
}
全部评论
(3) 回帖