UDN-企业互联网技术人气社区

板块导航

浏览  : 4080
回复  : 42

[社区公告] 邀你来战【UDN算法挑战】 现金红包等你来拿

[复制链接]
sunyani的头像 楼主
发表于 2015-12-9 13:56:09 | 显示全部楼层
九州纵横 发表于 2015-12-9 13:52
请问是在js上编写代码么

不用,直接回复代码就可以了
使用道具 举报

回复

发表于 2015-12-9 14:13:52 | 显示全部楼层
本帖最后由 junbao 于 2015-12-9 16:13 编辑
junbao 发表于 2015-12-8 14:50
第一题:
int[] num = new int[n]; //数字数组
int center; //临时变量

第二题:public static int GetLessTime(List<int> list_container, int num)
        {
            //初始化数据            int length = list_container.Count;
            int sum = 0, max = -1, avg = 0;
            int[] container = new int[length];
            int[] algorithm_array = new int[num];
            container = list_container.ToArray();
            //sort排序,求出最大值
            Array.Sort(container);
            max = container[length - 1];
            //如果数组长度小于等于人数,则返回数组的最大值
            if (length <= num)
            {
                return max;
            }
            for (int i = 0; i < length; i++)            {
                sum = sum + container;
            }
            avg = sum / num;
            for (int i = length - 1; i >= 0; i--)
            {
                for (int j = num - 1; j >= 0; j--)
                {
                    if (algorithm_array[j] + container <= avg || j == 0)
                    {
                        algorithm_array[j] = algorithm_array[j] + container;
                        break;
                    }
                }
                Array.Sort(algorithm_array);
            }
            return algorithm_array[num - 1] ;
        }

使用道具 举报

回复

发表于 2015-12-10 00:46:01 | 显示全部楼层
这是两道题的答案运行情况
http://runjs.udn.yyuap.com/show/yt7fforf
使用道具 举报

回复

发表于 2015-12-10 15:05:20 | 显示全部楼层
for (int i = 1; i <= n; i++){

  while(arr[i] != i){ // 这个循环总共最多执行n次

  t = arr[arr[i]];

  arr[arr[i]] = arr[i];

  arr[i] = t;

  ++cnt;

  }

}
使用道具 举报

回复

发表于 2015-12-10 16:02:35 | 显示全部楼层
电风扇的范德萨范德萨发大水
使用道具 举报

回复

发表于 2015-12-14 16:47:12 | 显示全部楼层
public void sort2(int[] arr){
          int tmp=0;
           for (int i=0; i!=arr.length;i++){
while (arr[i]!=i+1){
          tmp=arr[arr[i]-1=arr[i];
           arr[i]=tmp;
}
}
}



对吗 ?    帖子不错,加油
使用道具 举报

回复

发表于 2015-12-15 14:14:03 | 显示全部楼层
public void sort2(int[] arr){
          int tmp=0;
           for (int i=0; i!=arr.length;i++){
while (arr[i]!=i+1){
          tmp=arr[arr[i]-1=arr[i];
           arr[i]=tmp;
}
}
}
第一题答案
使用道具 举报

回复

发表于 2015-12-15 14:14:28 | 显示全部楼层
public static int GetLessTime(List<int> list_container, int num)
        {
            //初始化数据            int length = list_container.Count;
            int sum = 0, max = -1, avg = 0;
            int[] container = new int[length];
            int[] algorithm_array = new int[num];
            container = list_container.ToArray();
            //sort排序,求出最大值
            Array.Sort(container);
            max = container[length - 1];
            //如果数组长度小于等于人数,则返回数组的最大值
            if (length <= num)
            {
                return max;
            }
            for (int i = 0; i < length; i++)            {
                sum = sum + container;
            }
            avg = sum / num;
            for (int i = length - 1; i >= 0; i--)
            {
                for (int j = num - 1; j >= 0; j--)
                {
                    if (algorithm_array[j] + container <= avg || j == 0)
                    {
                        algorithm_array[j] = algorithm_array[j] + container;
                        break;
                    }
                }
                Array.Sort(algorithm_array);
            }
            return algorithm_array[num - 1] ;
        }
第二题答案
使用道具 举报

回复

发表于 2015-12-16 16:47:13 | 显示全部楼层
for (int i = 1; i <= n; i++){

  while(arr[i] != i){ // 这个循环总共最多执行n次

  t = arr[arr[i]];

  arr[arr[i]] = arr[i];

  arr[i] = t;

  ++cnt;

  }

}
使用道具 举报

回复

发表于 2015-12-17 09:19:44 | 显示全部楼层
Public int getNeeNum(int[] arr,int lim){
     int res = 1;
     int stepSum = 0;
     for (int i= 0; i !=arr.length; i++) {
      if (arr[i]>lim) {
           return Integer.MAX_VALUE;
      }
      stepSum +=arr[i];
      }
}
Return res;
}
public int solution3(int[] arr,int num){
      if (arr == null || arr.length ==0 || num <1) {
           throw new RuntimeException(“err”);
      }
      If (arr.length < num) {
           Int max = Integer.MIN_VALUE;
           For (int I =0; i != arr .length; i++) {
                 maxSum += arr[i];
           }
          Return max;
} else {
     Int minSum = 0;
     Int maxsum =0;
     For (int I = 0; i< arr.length; i++) {
           maxSum += arr[i];
     }
     While (minsum !=maxSum – 1 ) {
           Int mid = (minSum + maxsum) / 2;
           If (getNeedNum(arr, mid ) > num) {
                minSum = mid;
           } else {
                maxSum = mid;
           }
      }
     Return maxSum;
}
}


使用道具 举报

回复

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

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部