力扣194周周赛上

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

  1. 数组异或操作

  2. 保证文件名唯一

    注意这个示例:

思路与算法

  1. 半个月没写博客了,太懒了,不能再拖延了,今天开始全部带上C++和Java的双语言题解。
  2. 第一题没啥好说的,直接按照题意思路写即可。
  3. 第二题用map来存下当前字符串出现的次数即可,存好次数,下次找的时候看有没有这个东西,记得如果有这个,需要继续找后面的序数是否也已经在map中,直到找不到为止,此时注意要更新map,具体见代码了。

代码实现

  1. 数组异或操作
    Java实现
class Solution {public int xorOperation(int n, int start) {int res = start;for (int i = 1; i < n;i++) {start += 2;res = res ^ start;}return res;}
}

C++实现

class Solution {public:int xorOperation(int n, int start) {int res = start;for (int i = 1; i < n;i++) {start += 2;res = res ^ start;}return res;}
};
  1. 保证文件名唯一
    Java实现
class Solution {public String[] getFolderNames(String[] names) {int len = names.length;// 特殊情况处理if (len == 0) {return null;}// 初始化结果集字符串String[] res = new String[len];// Map<String,Integer> map = new HashMap<>();for (int i = 0; i < len; i++) {// 如果此前没出现过当前字符串,则直接赋值即可if (!map.containsKey(names[i])) {res[i] = names[i];map.put(names[i],1);} else {// 如果出现过,先取出之前出现的次数,再继续判断后面的序号是否出现过int num = map.get(names[i]);while (map.containsKey(names[i] + "(" + num + ")")) {num++;}// 找到了,直接赋值res[i] = names[i] + "(" + num + ")";// 记得更新mapmap.put(names[i] + "(" + num + ")",1);map.put(names[i],map.get(names[i]) + 1); }}return res;}
}

C++实现:思路一致的,未加注释

class Solution {public:vector<string> getFolderNames(vector<string>& names) {int n = names.size();unordered_map<string, int>  M;vector<string> res;for(int i = 0; i < n; i++){string tmp = "";if(M.find(names[i]) == M.end()){M[names[i]] = 1;tmp = names[i];  }else{int k = M[names[i]];tmp =  names[i] + '(' + to_string(k) + ')';while(M.find(tmp) != M.end()){k++;tmp =  names[i] + '(' + to_string(k) + ')';}    M[names[i]] = k+1;M[tmp] = 1;}res.push_back(tmp);}return res;}
};

复杂度分析

  1. 第二题使用Map时间空间复杂度均为O(N)

20200701:力扣194周周赛上相关推荐

  1. 20200724:力扣197周周赛上

    力扣197周周赛上 题目 思路与算法 代码实现 复杂度分析 题目 好数对的数目 仅含 1 的子串数 思路与算法 第一题直接暴力或者使用map来存值,注意到我们只需要找到这个数字出现的次数num,那么其 ...

  2. 20200705:力扣196周周赛上

    力扣196周周赛上 题目 思路与算法 代码实现 复杂度分析 判断能否形成等差数列 题目 所有蚂蚁掉下来前的最后一刻 请注意仔细看给的示例: 思路与算法 题目给定了数组长度大于等于2,也就是说,先排序, ...

  3. 20200616:力扣193周周赛上

    力扣193周周赛上 题目 思路与算法 代码实现 写在最后 题目 一维数组的动态和 不同整数的最少数目 思路与算法 第一题没啥好说的,动态和,dp最基础的东西. 第二题主要是一个贪心的过程,既然要剩下的 ...

  4. 20200612:力扣192周周赛上

    力扣192周周赛上 题目 思路与算法 代码实现 复杂度分析 题目 1. 重新排列数组 2. 数组中的k个最强值 思路与算法 第一题不需要太多思路,最简单的就是list,list将要求的顺序的数依次收入 ...

  5. 20200505:力扣151周周赛上

    力扣151周周赛上 题目 思路与算法 代码实现 题目 查询无效交易 2.比较字符串最小字母出现频次 思路与算法 第一题直接将我们需要的这四组数据包装成一个Transaction对象,主要是注意书写问题 ...

  6. 20200503:力扣187周周赛上

    力扣187周周赛上 题目 思路与算法 代码实现 复杂度分析 题目 旅行终点站 是否所有 1 都至少相隔 k 个元素 思路与算法 第一题我没做出来,说来惭愧,菜的离谱.看大神的题解豁然开朗,这题类似之前 ...

  7. 20201007:力扣209周周赛题解记录(上)

    力扣209周周赛题解记录(上) 题目 思路与算法 代码实现 复杂度分析 题目 特殊数组的特征值 奇偶树 思路与算法 第一题单纯的暴力就行,应该是可以用二分之类的改善复杂度,没必要赘述,直接上暴力遍历, ...

  8. 20200910:力扣204周周赛题解上(Java/Python/Cpp)

    力扣204周周赛题解上 题目 思路与算法 代码实现 写在最后 题目 1.1566. 重复至少 K 次且长度为 M 的模式 2.1567. 乘积为正数的最长子数组长度 思路与算法 热身题不要求算法技巧, ...

  9. 20200814:力扣201周周赛题解记录上

    力扣201周周赛题解记录上 题目 思路与算法 代码实现 写在最后 题目 整理字符串 找出第 N 个二进制字符串中的第 K 位 思路与算法 第一题这种类似消消乐的东西都是直接用栈来实现的,注意代码细节 ...

最新文章

  1. 是什么轮胎_为什么现在的车轮胎轮毂尺寸越来越大
  2. 软件项目管理0716:责任分工明确
  3. 性能测试——JMeter脚本录制和HTTP负载测试
  4. 代理IP对直播平台的影响与关系-国内多IP昙花一现
  5. 判别性的低秩字典学习代码matlab,基于分类的判别性字典学习的稀疏编码算法研究...
  6. 任意文件夹下打开cmd窗口
  7. 工作流图形设计器参考资料
  8. GitHub 上有哪些一般人也可以用的项目?
  9. 下载代码去 pudn.com每个编程人员都需要的网站
  10. 程序员该怎么学习---弱水三千,只取一瓢
  11. java人机猜拳_Java实现人机猜拳小游戏
  12. python菜单栏不见了如何恢复_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
  13. 支付宝小程序授权登陆篇
  14. 政策热市场冷 中国新能源汽车遇尴尬
  15. 对话腾讯云专家工程师常青,聊一聊全真互联网的“小小”变化
  16. Win10下Python3.x环境安装和配置教程
  17. 杂谈|程序员还是工程师
  18. 费雪方程式和交易量公式
  19. 20189200余超 2018-2019-2 移动平台应用开发实践第七周作业
  20. java-multimap使用

热门文章

  1. TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
  2. 阿里双十一 5 大招式!
  3. 国内首部智能设备安全报告:预计 2019 年漏洞增长率超 20%
  4. 微软智能云Azure Kubernetes容器服务落地中国,开启预览
  5. 腾讯痛下杀手,是时候让区块链回归技术和应用的本质了!
  6. 为什么现在的监控系统容易硬盘坏?附原理解析
  7. mysql锁表语句,从理论到实践!
  8. 帮你深度探寻Spring循环依赖源码实现!面经解析
  9. 第 10 章 对象的实例化内存布局与访问定位
  10. mysql选择哪个隔离级别更好_深入理解Mysql的四种隔离级别