新足迹

 找回密码
 注册

精华好帖回顾

· 【冬日里的暖食暖文】好吃好做,一举两得两顿大餐,干锅鸡虾+四川名小吃:冒烤鸭,从自制四川火锅底料开始~ (2015-8-1) 兔子爱吃肉 · West Highland Way, 和来都来了就这么回去太亏了的吃喝之旅(格拉斯哥,巴黎,伦敦)(完) (2022-5-26) shine_on
· 青涩的初恋 (2008-2-29) dvd · 七个仙女的故事(更新) (2008-12-18) 仰望星空
Advertisement
Advertisement
查看: 5368|回复: 16

ING的面试题:一排硬币翻一个找最大连续相同面(语言:Javascript) [复制链接]

发表于 2015-12-23 15:32 |显示全部楼层
此文章由 cloud226 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cloud226 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 cloud226 于 2015-12-24 14:12 编辑

是我大意 看错题目了 题目要求是通过翻转一个硬币 找出最多几个相同的pair 我却错看成最多几个连续相同



原题代码
function solution(A){
        var n = A.length;
        var result = 0;
        var i;
        for(i=0; i<n-1; i++){
                if(A==A[i+1])
                        result = result+1;
        }        
        
        var r=0;
        for(i=0; i<n; i++){
                var count=0;
                if(i>0){
                        if(A[i-1]!=A)
                                count++;
                        else
                                count--;
                }
                if(i<n-1){
                        if(A[i+1]!=A)
                                count++;
                        else
                                count--;        
                }
                r= Math.max(r,count);
        }
        
        return result+r;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
Advertisement
Advertisement

发表于 2015-12-23 16:05 |显示全部楼层
此文章由 mzbac 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 mzbac 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个 只要删除
    else
    count=count-1;

这个bug 应该就答题完事了吧

发表于 2015-12-23 16:10 |显示全部楼层
此文章由 shadowfiend 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 shadowfiend 所有!转贴必须注明作者、出处和本声明,并保持内容完整
现在用codility 笔试的还挺多的嘛

发表于 2015-12-23 16:17 |显示全部楼层
此文章由 cloud226 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cloud226 所有!转贴必须注明作者、出处和本声明,并保持内容完整
mzbac 发表于 2015-12-23 17:05
这个 只要删除
    else
    count=count-1;

哦?哪一个count = count - 1呢? 有两个

而且count = count - 1 有存在的意义吧 和相邻相同的硬币flip后就是减了一个吧

发表于 2015-12-23 16:28 |显示全部楼层
此文章由 mzbac 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 mzbac 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 mzbac 于 2015-12-23 17:30 编辑

你是对的 = =

发表于 2015-12-23 16:34 |显示全部楼层
此文章由 cloud226 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cloud226 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 cloud226 于 2015-12-24 01:29 编辑
mzbac 发表于 2015-12-23 17:28


有两个地方有你说的
else
  count = count - 1
题目要求最多更改3行code

不过这个和binary search差很多吧 binary search数列要先sort好 而且是self recursive的
Advertisement
Advertisement

发表于 2015-12-23 16:39 |显示全部楼层
此文章由 mzbac 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 mzbac 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 mzbac 于 2015-12-23 17:55 编辑
cloud226 发表于 2015-12-23 17:34
有两个地方有你说的
else
  count = count - 1


后一个有个bug 如果左侧相同 右侧不同 count 减回去没有了 比如 1110000 会返回3 实际应该返回4
我之前想到二分法查找确实有问题 二分法 找到的 不一定是最大的

发表于 2015-12-23 17:42 来自手机 |显示全部楼层
此文章由 yzh1999 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 yzh1999 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Var r= -1;

评分

参与人数 1积分 +2 收起 理由
cloud226 + 2 感谢

查看全部评分

头像被屏蔽

禁止访问

发表于 2015-12-23 17:55 来自手机 |显示全部楼层
此文章由 cjc 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cjc 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你们每次去赌场都带着电脑和类似的软件算一算,是不是就哗哗哗的赚钱呀?

发表于 2015-12-23 19:29 |显示全部楼层
此文章由 mzbac 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 mzbac 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 mzbac 于 2015-12-23 20:33 编辑

我的可能不止N2....

function search(A) {
  var n = A.length;
  var result = [];
  for (var i = 0; i < Math.floor(n / 2); i++) {
    var count = 0;
    if (i > 0) {
      if (A[i - 1] != A)
        count = count + 1;
    }
    if (i < n - 1) {
      if (A[i + 1] != A)
        count = count + 1;

    }
    if (count == 2)
      result.push(i);

  }

  return result;
}

function solution(A) {
  var n = A.length;
  var indexs = search(A);
  var r=0;
  for (var index = 0; index < indexs.length; index++) {
    if (A[indexs[index]] == 1) {
      A[indexs[index]] = 0;
    }
    else {
      A[indexs[index]] = 1;
    }

    var result = 0;
    var i;
    for (i = 0; i < n - 2; i++) {
      if (A == A[i + 1] && A[i + 1] == A[i + 2])

        result = result + 1;
    }
    r=Math.max(r,result + 2);
  }
  
  return r;
}
var A = [];
A[0] = 1;
A[1] = 1;
A[2] = 0;
A[3] = 1;
A[4] = 1;
A[5] = 1;
A[6] = 1;
A[7] = 0;
A[8] = 1;
console.log('result :' + solution(A));

评分

参与人数 1积分 +2 收起 理由
cloud226 + 2 感谢

查看全部评分

发表于 2015-12-23 19:33 |显示全部楼层
此文章由 CITYLOOK 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 CITYLOOK 所有!转贴必须注明作者、出处和本声明,并保持内容完整
is this so called ma nong?
so des nei....
Advertisement
Advertisement

发表于 2015-12-23 22:30 |显示全部楼层
此文章由 cloud226 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cloud226 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 cloud226 于 2015-12-24 01:26 编辑

抱歉 误导你了 我大意看错题目

发表于 2015-12-23 22:33 |显示全部楼层
此文章由 cloud226 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cloud226 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 cloud226 于 2015-12-24 01:25 编辑

抱歉 误导你了 我大意看错题目

发表于 2015-12-23 23:12 |显示全部楼层
此文章由 xmj 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xmj 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 xmj 于 2015-12-24 01:21 编辑

既然是js,楼主能不能把原始代码copy到jsfiddle共享个link出来?我也来试一试
https://jsfiddle.net/5L2k5c1f/2/

  1. var r = -1;
复制代码
首先如果让我在线coding,我做不出来的
但是给我google下其实不难理解
题目问题有多少adjacent,其实是问你有多少pairs,比如 [0 0 1 0 1 1]答案是2,因为数组中有2对 0 0和1 1

接下去就好办了
三种情况
1. 数组中所有元素相同 0 0 0 0,这样子最好的情况是reverse最两边的元素,对数-1
2. 数组中只有一个元素一边不同,比如 1 1 1 1 0 0 0,这种理想情况是reverse中间的界限元素1或者0,对数不变
3.含有一个元素2边都不同,比如 0 0 1 0 0,元素1和两边元素都不同,对数+2

三种情况优先级往下优先

评分

参与人数 1积分 +4 收起 理由
cloud226 + 4 感谢分享

查看全部评分

发表于 2015-12-24 00:17 |显示全部楼层
此文章由 xmj 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xmj 所有!转贴必须注明作者、出处和本声明,并保持内容完整
cloud226 发表于 2015-12-23 23:30
很遗憾 好像还是错的

试试这个array [1,1,0,1,1,0]


这个答案是对的,问你有多少,这个数组答案是4

发表于 2015-12-24 00:19 |显示全部楼层
此文章由 xmj 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xmj 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 xmj 于 2015-12-24 01:20 编辑
yzh1999 发表于 2015-12-23 18:42
Var r= -1;


大牛就是这样子,只改一个数值,还不带解释,可惜没分了
Advertisement
Advertisement

发表于 2015-12-24 00:27 |显示全部楼层
此文章由 cloud226 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cloud226 所有!转贴必须注明作者、出处和本声明,并保持内容完整
xmj 发表于 2015-12-24 00:12
既然是js,楼主能不能把原始代码copy到jsfiddle共享个link出来?我也来试一试
https://jsfiddle.net/5L2k5c ...

感谢

我太大意 直接想当然的去找最大连续相同数了

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部