zoukankan      html  css  js  c++  java
  • 竞赛194

    数组异或操作

    给你两个整数,n 和 start 。

    数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。

    请返回 nums 中所有元素按位异或(XOR)后得到的结果。

    示例 1:

    输入:n = 5, start = 0
    输出:8
    解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。
         "^" 为按位异或 XOR 运算符。
    

    示例 2:

    输入:n = 4, start = 3
    输出:8
    解释:数组 nums 为 [3, 5, 7, 9],其中 (3 ^ 5 ^ 7 ^ 9) = 8.

    示例 3:

    输入:n = 1, start = 7
    输出:7
    

    示例 4:

    输入:n = 10, start = 5
    输出:2
    

    提示:

    • 1 <= n <= 1000
    • 0 <= start <= 1000
    • n == nums.length

    // 异或是按位相同时(0,0  或 1,1)取 0 ,不同取1, 所以 任何数 ^ 0 = 任何树。

    var xorOperation = function(n, start) {
        // empty不能map, map内部实现是用到了for in, 不能遍历empty
        // let arr = new Array(n).fill(0).map((m, i)=>start+2*i)
        // return arr.reduce((init, v)=>init^v)
    //  0^n =n
        let i = 0, res=0
        while(i<n){
            res^= start+2*i
            i++
        }
        return res
    };
    

      

    保证文件名唯一

    给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。

    由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新文件夹的文件名添加后缀,其中 k 是能保证文件名唯一的 最小正整数 。

    返回长度为 n 的字符串数组,其中 ans[i] 是创建第 i 个文件夹时系统分配给该文件夹的实际名称。

    示例 1:

    输入:names = ["pes","fifa","gta","pes(2019)"]
    输出:["pes","fifa","gta","pes(2019)"]
    解释:文件系统将会这样创建文件名:
    "pes" --> 之前未分配,仍为 "pes"
    "fifa" --> 之前未分配,仍为 "fifa"
    "gta" --> 之前未分配,仍为 "gta"
    "pes(2019)" --> 之前未分配,仍为 "pes(2019)"
    

    示例 2:

    输入:names = ["gta","gta(1)","gta","avalon"]
    输出:["gta","gta(1)","gta(2)","avalon"]
    解释:文件系统将会这样创建文件名:
    "gta" --> 之前未分配,仍为 "gta"
    "gta(1)" --> 之前未分配,仍为 "gta(1)"
    "gta" --> 文件名被占用,系统为该名称添加后缀 (k),由于 "gta(1)" 也被占用,所以 k = 2 。实际创建的文件名为 "gta(2)" 。
    "avalon" --> 之前未分配,仍为 "avalon"
    

    示例 3:

    输入:names = ["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece"]
    输出:["onepiece","onepiece(1)","onepiece(2)","onepiece(3)","onepiece(4)"]
    解释:当创建最后一个文件夹时,最小的正有效 k 为 4 ,文件名变为 "onepiece(4)"。
    

    示例 4:

    输入:names = ["wano","wano","wano","wano"]
    输出:["wano","wano(1)","wano(2)","wano(3)"]
    解释:每次创建文件夹 "wano" 时,只需增加后缀中 k 的值即可。

    示例 5:

    输入:names = ["kaido","kaido(1)","kaido","kaido(1)"]
    输出:["kaido","kaido(1)","kaido(2)","kaido(1)(1)"]
    解释:注意,如果含后缀文件名被占用,那么系统也会按规则在名称后添加新的后缀 (k) 。
    

    提示:

    • 1 <= names.length <= 5 * 10^4
    • 1 <= names[i].length <= 20
    • names[i] 由小写英文字母、数字和/或圆括号组成。
    /**
     * @param {string[]} names
     * @return {string[]}
     */
    // 调试了好久,最后剩10几分钟,最后一个测试用例还是没通过,不知哪里错了
    var getFolderNames = function(names) { let pre = []; return names.map(m=>{ let _m; if(pre.includes(m)){ let nums = []; pre.forEach(p=>{ let rep = p.match(/(.*)((d+))+?$/); if(rep) { let presub = rep[1]; let pi = presub === m; // let pi = presub.indexOf(m) if(pi){ // _p????? let _p = p.slice(m.length-1) let rm = _p.match(/.*((d+))$/); if(rm){ nums.push(Number(rm[1])) } } } }) if(nums.length) { let max = nums.length let s = 1; let f = true while(s<=max){ if(!nums.includes(s)){ _m = m+'('+s+')' f = false } s++ } if(f){ _m = m+'('+(max+1)+')' } } else { _m = m+'('+1+')' } }else{ _m = m; } pre.push(_m) return _m }) };
    // map结构判断是否存在这样的文件名,存在的话,判断 “名+val”存在不存在,存在的话val++
    var getFolderNames = function(names) {
        let h = {};
        let res=[];
         for (let i = 0; i < names.length; ++i){
            let tmp = h[names[i]];
            if (!tmp){
                res.push(names[i]);
                h[names[i]] = 1;
            }else{
                while (h[(names[i]+"("+(tmp)+")")]) tmp++;
                res.push(names[i]+"("+(tmp)+")");
                h[names[i]] = tmp;
                h[names[i]+"("+(tmp)+")"] = 1;
            }
        }
        return res;
    }
    

      

  • 相关阅读:
    Windows SDK编程(Delphi版) 之 应用基础,楔子
    一个小问题引发的论证思考
    Delphi 组件开发教程指南(7)继续模拟动画显示控件
    用PyInstaller将python转成可执行文件exe笔记
    使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
    Microsof Office SharePoint 2007 工作流开发环境搭建
    How to monitor Web server performance by using counter logs in System Monitor in IIS
    LINQ之Order By
    window 性能监视器
    内存泄露检测工具
  • 原文地址:https://www.cnblogs.com/zhangzs000/p/13172480.html
Copyright © 2011-2022 走看看