T1:判断两个事件是否存在冲突

思路:判断两个区间是否有交集

public boolean haveConflict(String[] event1, String[] event2) {
// 比较 Unicode 字符, 使用 compareTo 函数
if (event1[1].compareTo(event2[0]) < 0 || event2[1].compareTo(event1[0]) < 0) {
return false;
} return true;
}

T2:最大公因素等于 K 的子数组数目

思路:暴力枚举

/**
* 求两个数的最大公因数
* @param a
* @param b
* @required a <= b
* @return
*/
public int gcd(int a, int b) {
if (a == 0) {
return b;
} return gcd(b % a, a);
} public int subarrayGCD(int[] nums, int k) {
int res = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] % k != 0) {
continue;
} int temp = nums[i];
for (int j = i; j < nums.length; j++) {
if (nums[j] % k != 0) {
break;
} temp = gcd(temp, nums[j]);
if (temp % k != 0) {
break;
} if (temp == k) {
res += 1;
}
}
} return res;
}

T3:使数组相等的最小开销

思路:中位数贪心,将 cost[i] 转化为 nums[i] 出现的次数,就可以将题目转化为 LeeCode 462: 最小操作次数使数组元素相等II

注意数据大小:

  • counts 使用 int 会溢出,之前卡在这里答案一直出错
public long minCost(int[] nums, int[] cost) {
int[][] pairs = new int[nums.length][2]; long counts = 0;
for (int i = 0; i < nums.length; i++) {
pairs[i][0] = nums[i];
pairs[i][1] = cost[i]; counts += cost[i];
} Arrays.sort(pairs, (o1, o2) -> {
return o1[0] - o2[0];
}); counts /= 2;
int index = 0;
for (; index < pairs.length; index++) {
counts -= pairs[index][1];
if (counts < 0) {
break;
}
} long res = 0;
for (int i = 0; i < pairs.length; i++) {
if (i == index) {
continue;
} long diff = Math.abs(pairs[i][0] - pairs[index][0]);
long times = pairs[i][1];
res += diff * times;
} return res;
}

T4:使数组相似的最少操作

思路:奇偶排序 + 贪心选择

按奇偶分类并排序,让最小的一对,次小的一对,依次类推,最大的组成一对,可以得到 nums 数组变化量的最小值

public long makeSimilar(int[] nums, int[] target) {
Arrays.sort(nums);
Arrays.sort(target); long res = 0; // index[0] 表示 target 当前指向的偶元素位置
// index[1] 表示 target 当前指向的奇元素位置
int[] index = new int[2]; for (int num : nums) {
int temp = num % 2;
while (target[index[temp]] % 2 != temp) {
index[num % 2] += 1;
} res += Math.abs(num - target[index[temp]]);
index[temp] += 1;
} return res / 4;
}

LeeCode 316周赛复盘的更多相关文章

  1. leecode系列--Two Sum

    学习这件事在任何时间都不能停下.准备坚持刷leecode来提高自己,也会把自己的解答过程记录下来,希望能进步. Two Sum Given an array of integers, return i ...

  2. 周赛-KIDx's Pagination 分类: 比赛 2015-08-02 08:23 7人阅读 评论(0) 收藏

    KIDx's Pagination Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) S ...

  3. Win8制作和使用恢复盘

    制作和使用恢复盘要制作恢复盘,请执行以下操作:注:确保计算机连接到交流电源.1. 将指针移至屏幕的右上角或右下角以显示超级按钮,然后单击搜索.2. 根据操作系统的不同,执行以下某项操作:• 在 Win ...

  4. insertion Sort List (链表的插入排序) leecode java

    逻辑简单,代码难写,基础不劳,leecode写注释不能出现中文,太麻烦,我写了大量注释,链表问题最重要的就是你那个指针式干啥的 提交地址https://oj.leetcode.com/problems ...

  5. 后续遍历 java leecode

    以前觉得后续遍历最难写,今天看了篇博客http://blog.csdn.net/sgbfblog/article/details/7773103,其实却是我们仔细比较后续遍历和先序遍历,其实后续遍历就 ...

  6. 非递归实现先序遍历 java leecode 提交

    写完才知道自己学习都是似是而非啊,大家可以也在leecode上提交代码,纯手写,离开eclipse第一种方式:数据结构书上的,使用栈大概思路.1.不断将根节点的左孩子的左孩子直到为空,在这个过程入栈. ...

  7. leecode 归并排序 链表(java)

    写了好久,终于写成了.第一次zai leecode错题,题目质量很高,适合面试,与 1.归并排序是稳定的,在java中 Arrays.sort(a);中对于对象的排序就是归并排序.对于原子类型数据使用 ...

  8. bug修复复盘

    mybatis与数据库交互时,报了莫名其妙的错,日志中显示的Stack Trace中报错的代码行数与IDE中还一致,逐重启tomcat,异常消失. 故障复盘:没有重启tomcat,使用copy命令直接 ...

  9. Swing开发界面时的一个bug复盘

    问题:QA突然发个截图说一个Dialog上展示的东西变形了 分析:不理解,什么也没做,怎么会变形,刚刚我用的时候还正常.看看代码,的确什么也没更改:在本地测一下,也没有问题:baidu,bing,st ...

  10. DDE复盘流程

    开始复盘: 1 导入前面数据 重新复盘: 1.打开行情管理器 2.关闭图表 3.删除tick和1分钟图 4.关闭行情管理器 5.开启.

随机推荐

  1. ubuntu14.04 网络配置ubuntu14.04 网络配置

    流程分析: 在Ubuntu系统网络设备启动的流程中,会依赖/etc/network/interface的配置文件初始化网络接口,所以直接在/etc/network/interface之中配置好对应的d ...

  2. Reincarnation

    HDU4622 Now you are back,and have a task to do: Given you a string s consist of lower-case English l ...

  3. 剑指offer-删除链表中的重复结点

    题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  4. css 多行文本展开收起

    <template> <div class="content"> <div :class="[isOpen ? 'text' : 'text ...

  5. UG二次开发-内存访问违例

    在项目中修改路径参数后重算发生了内存访问违例的错误,经过调试,发现是下面这一行出的错 surfaceContourBuilder1.Commit(); 经过反复调试,发现这个东西不能随便放,不可以想当 ...

  6. webpack逆向之报错Cannot read properties of undefined (reading 'call')

    经典报错 记录一下: 1: 缺少模块    补上 2.主模块无法调用子模块   有可能网站用的数组形式的模块包,你用的是对象,调用方法就要改变. 改写过程中 用的是对象方式: 那么3号包调用的4号包 ...

  7. 小米盒子TV变装魔法

    最近从一位台湾的朋友那里白嫖了一个 v2 节点, 恰好家里有一台家用的 小米盒子, 就寻思着能不能折腾一下, 共享上网 先将小米盒子开启adb调试, 参照这里: https://www.jb51.ne ...

  8. mysql-开启日志记录功能

    开启日志记录功能 -- 开启功能 SET GLOBAL general_log = ON; -- 保存到文件 SET GLOBAL log_output = 'file'; 查看日志内容 -- 查看日 ...

  9. UMA插件专题(一)——基础网格创建

    什么是UMA? UMA,Unity Multipurpose Avatar,是一个开源Avatar创建框架,通过它可以实现自定义人物(或任何生物)的模型,包括换装,改变身材样貌等功能. 现在先从UMA ...

  10. NX 二次开发 多个功能集成一个DLL的方法

    用C++做NX二次开发,一个功能建一个工程,管理起来很不方便,在网上找了些资料学习,成功的把多个功能做到一个工程里(多功能集成到一个DLL). 1.首先要了解外挂的菜单文件的基础,要实现多个功能集合在 ...