求京东笔试题第二题?
发布于 2018-09-09 20:13 8472 次浏览 0 赞 来自 笔试面试  

求京东笔试题第二题?

51 条回复

请问我还没有点交卷,但考试最后时间到了,自动跳到了在线考试结束的页面。那试卷交上去了没有?

2018-09-09 20:13
2

老哥第一题会拉?

2018-09-09 20:19

先来个第一题

2018-09-09 20:23

求第一题

2018-09-09 20:27

同求


2018-09-09 20:31

18%emmmmm


2018-09-09 20:36
1

考的都一样吗

2018-09-09 20:36

第一题一直55%,翻来覆去看不出代码啥问题。有老哥是一样的情况嘛

2018-09-09 20:37

第一题答案发出来啊,大佬

2018-09-09 20:37

遍历把比它小的设为不合格

2018-09-09 20:38

90%

2018-09-09 20:39

第二题不会啊  有谁会的么


2018-09-09 20:39

哎,求答案,能不能把答案发出来,没有思路啊

2018-09-09 20:39

第一题一点思路都没有啊!!!!

2018-09-09 20:39

求第一题的思路

第二题先把商品排个序,然后写个二重循环,它就告诉我AC了

2018-09-09 20:41

求楼主发第一题答案!

2018-09-09 20:42

第一题什么意思,有谁能告诉我呀

2018-09-09 20:42

第一题都不会

2018-09-09 20:42

第一题相似的串的有做出来的吗,求答案

2018-09-09 20:44
var n = readInt();
var arr=new Array(n);
for(i=0;i<n;i++){
    arr[i]=readInt();
}
var compare = function(x,y){
    if(x<y){
        return -1;
    }else if(x>y){
        return 1;
    }else{
        return 0;
    }
};
arr.sort(compare);
if(arr.length%2==0){
    console.log((arr[arr.length/2-1]+arr[arr.length/2])/2);
}else{
    console.log(arr[(arr.length-1)/2]);
}


2018-09-09 20:45
1

第一题:

if(M%3==0)

    printf("Yes");

else

    printf("No");


通过了55%,我还有救吗?

2018-09-09 20:47
1

楼上发的是第几题


2018-09-09 20:47

大佬发的是什么题目的答案

2018-09-09 20:50

第一题,完全部图,c++ ac答案

#include <iostream>

#include <vector>

#include <set>

#include <algorithm>

using namespace std;

int findunlink(vector<int>& table,int n)

{

    for(int i=0;i<table.size();i++)

        if(table[i]!=i+1)

        {

            return i+1;

        }

    return table.size()+1;

}

int main()

{

    int t;

    cin>>t;

    while(t--)

    {

        int n,m;

        cin>>n>>m;

        vector<int> s(m),t(m);

        vector<set<int> > groups;

        for(int i=0;i<m;i++)

            cin>>s[i]>>t[i];

        bool res = true;

        for(int i=1;i<=n;i++)

        {

            vector<int> link;

            int unlink = 0;

            for(int j=0;j<m;j++)

            {

                if(t[j]==i)

                    link.push_back(s[j]);

                if(s[j]>i)

                    break;

            }

            

            if(link.size()==i-1)//all n-1 is link,new set

            {

                set<int> a;

                a.insert(i);

                groups.push_back(a);

            }

            else if(link.size()<i-1)

            {

                unlink = findunlink(link,i);

                set<int>* group;

                for(int u=0;u<groups.size();u++)

                {

                    if(groups[u].count(unlink)>0)

                    {

                        group=&groups[u];

                        break;

                    }

                }

                for(int j=1;j<i;j++)

                {

                    if(find(link.begin(),link.end(),j)==link.end()&&(*group).count(j)==0)

                    {

                        cout<<"No"<<endl;

                        i=n+1;

                        res=false;

                        break;

                    }

                    else if(find(link.begin(),link.end(),j)!=link.end()&&(*group).count(j)>0)

                    {

                        cout<<"No"<<endl;

                        i=n+1;

                        res=false;

                        break;

                    }

                }

                if(res)

                {

                    (*group).insert(i);

                }

                    

            }

        }

        if(res)

            cout<<"Yes"<<endl;

    }

    

    return 0;

}


2018-09-09 20:59

c++第一题ac

#include <iostream>

#include <vector>

#include <set>

#include <algorithm>

using namespace std;

int findunlink(vector<int>& table,int n)

{

    for(int i=0;i<table.size();i++)

        if(table[i]!=i+1)

        {

            return i+1;

        }

    return table.size()+1;

}

int main()

{

    int t;

    cin>>t;

    while(t--)

    {

        int n,m;

        cin>>n>>m;

        vector<int> s(m),t(m);

        vector<set<int> > groups;

        for(int i=0;i<m;i++)

            cin>>s[i]>>t[i];

        bool res = true;

        for(int i=1;i<=n;i++)

        {

            vector<int> link;

            int unlink = 0;

            for(int j=0;j<m;j++)

            {

                if(t[j]==i)

                    link.push_back(s[j]);

                if(s[j]>i)

                    break;

            }

            

            if(link.size()==i-1)//all n-1 is link,new set

            {

                set<int> a;

                a.insert(i);

                groups.push_back(a);

            }

            else if(link.size()<i-1)

            {

                unlink = findunlink(link,i);

                set<int>* group;

                for(int u=0;u<groups.size();u++)

                {

                    if(groups[u].count(unlink)>0)

                    {

                        group=&groups[u];

                        break;

                    }

                }

                for(int j=1;j<i;j++)

                {

                    if(find(link.begin(),link.end(),j)==link.end()&&(*group).count(j)==0)

                    {

                        cout<<"No"<<endl;

                        i=n+1;

                        res=false;

                        break;

                    }

                    else if(find(link.begin(),link.end(),j)!=link.end()&&(*group).count(j)>0)

                    {

                        cout<<"No"<<endl;

                        i=n+1;

                        res=false;

                        break;

                    }

                }

                if(res)

                {

                    (*group).insert(i);

                }

                    

            }

        }

        if(res)

            cout<<"Yes"<<endl;

    }

    

    return 0;

}


2018-09-09 21:00
coder_JHWH496C 回复 coder_TWWWB6Z2

我也是55%,找不出问题

2018-09-09 21:00

。。。所有时间花在python读取上,结果还没成功。。。。跪了。。。

2018-09-09 21:01
java.util.*;

Main {

    main(String[] args) {
        Scanner sc = Scanner(System.);
        (sc.hasNext()) {
            n = sc.nextInt();
            [] a = [n];
            [] b = [n];
            [] c = [n];
            [] d = [n];
            num = ;
            (i=;i<n;i++){
                a[i] = sc.nextInt();
                b[i] = sc.nextInt();
                c[i] = sc.nextInt();
            }
            (i=;i<n;i++){
                (j=i+;j<n;j++){
                    (a[j]>a[i]){
                        (b[j]>b[i]){
                            (c[j]>c[i]){
                                d[i] = ;
                            }
                        }
                    }{
                        (a[j]<a[i]){
                            (b[j]<b[i]){
                                (c[j]<c[i]){
                                    d[j] = ;
                                }
                            }
                        }
                    }
                }
            }
            (i=;i<n;i++){
                (d[i]==){
                    num++;
                }
            }
            System..println(num);

        }

    }
}


2018-09-09 21:01

请问一下,没有保存就自动交卷了能否保存?


2018-09-09 21:03

第二题不知道什么原因,只过60%,第一题AC

2018-09-09 21:03
coder_OmCLfkLi 回复 coder_JHWH496C

这个应该是时间或者内存的问题,我一开始也是55%,后来优化了一下,没有改思路,只是省去了一些繁琐步骤,变成82%,并且提示是否有循环过大或者开辟空间过多的地方

2018-09-09 21:04

100%通过  顶部输入获取略过。就是个排序找中位数。对了,不能使用快排,因为这个傻瓜编译器认为快排比原生排序sort耗时更久(原生sort是冒泡排序,我就呵呵)。

var arr = ['3', '2', '9', '10', '11'];
var newArr = arr.map(function(i){
return parseInt(i);
});
var tempArr = newArr.sort(function(a,b) {
    return a - b;
});
function findMid(arr) {
var len = arr.length;
return len % 2 === 0 ? (arr[len/2-1]+arr[len/2])/2 : arr[(len-1)/2];
}
var needNum = findMid(tempArr);
console.log(needNum);


2018-09-09 21:04
coder_4QEbTBqo 回复 coder_UKJD935G

#include<stdio.h> int main(){ int n,i,j,t,sum1; float avsum,sum; int a[105]; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;i++){ scanf("%d",&a[i]); } for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ if(a[i]>a[j]){ t=a[i]; a[i]=a[j]; a[j]=t; } } } if(n%2==0){ sum1 = a[n/2] + a[(n/2)-1]; sum = sum1; avsum = sum/2; if(sum1%2!=0){ printf("%.1f\n",avsum); }else{ printf("%.f\n",avsum); }

	}else{
		sum1 = a[(n-1)/2];
		printf("%d\n",sum1);
	}
}
return 0;

}

2018-09-09 21:04

第一题;通过率100%

function sortNum(a,b){

        return a-b;

}

numSize = read.line();

numArr = read.line();

numArr = str.split(' ');

numArrNew = numArr.sort();

for(var i =0;i<numArr.length;i++){

    numArrNew[i] = parseInt(numArr[i]);

}

numArrNew.sort(sortNum);

if(numArrNew.length%2 == 0){

    zhongweishuS = parseInt(numArrNew.length/2);

    zhongweishuX = zhongweishuS - 1;

    zhongweushu = ( parseInt(numArrNew[zhongweishuS]) + parseInt(numArrNew[zhongweishuX]) )/2;

    print(zhongweushu);

}else{

    zhongweishu = Math.floor(parseFloat(numArrNew.length/2));

    print(numArrNew[zhongweishu]);

}


2018-09-09 21:07

<script type="text/javascript">console("23333");</script>

2018-09-09 21:07
coder_2TAVRCR7 回复 coder_Fw3CRqMu

第二题要怎么排序,可以解答一下吗

2018-09-09 21:10

第二题个人只做对了 27%,最后还有个判断那点没完善,正准备补充就提交了,只差一分钟,唉。

个人思路,找出重复次数最多的两项,不是同一项并且出现次数都大于1,都减1相乘得到最大利益。

话不多说,上代码,有个很简单的判断没写完,表示撸炸了不想写了,该去吃鸡压压惊,我写个注释,你们自己完善吧。


var n = 4;
var arr = [1, 2, 3, 4];
// 寻找重复数字和重复次数
function saveAgainCount(arr) {
var newArr = unique(arr);
var countArr = [];
newArr.forEach(function(item){
var tempArr = arr.filter(function(num){
return item === num;
});
var count = tempArr.length;
countArr.push({item, count});
});
return countArr;
}
// 数组去重,没办法,编译器不能使用ES6的set结构去重,只能这么去重了
function unique(arr) {
var res = [];
arr.forEach(function(e, i, arr) {
if (arr.indexOf(e) === i) {
res.push(e);
}
});
return res;
}
// 根据对象数组的重复次数排序
function compare(property) {
return function (obj1, obj2) {
var value1 = obj1[property];
var value2 = obj2[property];
return value1 - value2;
}
}

var finalArr = saveAgainCount(arr);
finalArr.sort(compare("count"));

/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ 
******************************开始写代码******************************/
// 取最大重复次数俩值
function solve(arr) {
    var len = arr.length;
var fir = arr[len-1];
var sec = arr[len-2];
/*
    这里的判断还没完善,如果总城市不大于等于4,最大利益为0;如果出现的次数都不大于1,则最大利益为1。
    */
// 如果俩数组对象相同,证明没办法获取最大利润——修的路有交叉点
if (n < 4) {
return 0;
}
if (n) {
// 如果出现的次数都不大于1,则最大利益为1
// ...
}
// 最大重复次数-1再相乘
return (fir.count-1) * (sec.count-1);
}
/******************************结束写代码******************************/

var res;
res = solve(finalArr);
console.log(res);



2018-09-09 21:11
coder_wbZcVqw7 回复 coder_DYXfiuaD

18%的老哥,握手

2018-09-09 21:16
coder_wbZcVqw7 回复 coder_Fw3CRqMu

我一样的思路,排序再二重循环只有18%,求解答

2018-09-09 21:18

18%的应该是重复计算了

2018-09-09 21:21

第一题:100% AC, 第二题放弃。


java.util.*Main {

    Node{
        ArrayList<Node> (value){
            .= value= ArrayList<>()= }
    }

    (Scanner in){
        n = in.nextInt()m = in.nextInt()HashMap<IntegerNode> map = HashMap<>()(i = i < ni++){
            map.put(i+Node(i+))}

        (i = i < mi++){
            f = in.nextInt()s = in.nextInt()Node nf = map.get(f)Node ns = map.get(s)nf..add(ns)ns..add(nf)}

        Node n1 = map.get()map.remove()List<Node> xl = n1.List<Node> nxl = ArrayList<>()(Map.Entry<IntegerNode> entry : map.entrySet()) {
            (!xl.contains(entry.getValue())){
                nxl.add(entry.getValue())}
        }

        pan = (Node node : nxl){
            (Node node1: xl){
                (!node..contains(node1)){
                    pan = }
            }
        }
        (pan){
            System..println()}{
            System..println()}
    }

    (String[] args){

        Scanner in = Scanner(System.)n = in.nextInt()(i = i < ni++){
            (in)}
    }
}


2018-09-09 21:23
java.util.*Main {

    Node{
        ArrayList<Node> (value){
            .= value= ArrayList<>()= }
    }

    (Scanner in){
        n = in.nextInt()m = in.nextInt()HashMap<IntegerNode> map = HashMap<>()(i = i < ni++){
            map.put(i+Node(i+))}

        (i = i < mi++){
            f = in.nextInt()s = in.nextInt()Node nf = map.get(f)Node ns = map.get(s)nf..add(ns)ns..add(nf)}

        Node n1 = map.get()map.remove()List<Node> xl = n1.List<Node> nxl = ArrayList<>()(Map.Entry<IntegerNode> entry : map.entrySet()) {
            (!xl.contains(entry.getValue())){
                nxl.add(entry.getValue())}
        }

        pan = (Node node : nxl){
            (Node node1: xl){
                (!node..contains(node1)){
                    pan = }
            }
        }
        (pan){
            System..println()}{
            System..println()}
    }

    (String[] args){

        Scanner in = Scanner(System.)n = in.nextInt()(i = i < ni++){
            (in)}
    }
}


2018-09-09 21:24

第一题 100% AC

2018-09-09 21:25




import java.util.*;

/*第一题 100% AC*/

public class Main {


    public static class Node{

        public int value;

        public ArrayList<Node> nexts;

        public boolean pass;


        public Node(int value){

            this.value = value;

            nexts = new ArrayList<>();

            pass = false;

        }

    }


    public static void process(Scanner in){

        int n = in.nextInt();

        int m = in.nextInt();


        HashMap<Integer, Node> map = new HashMap<>();

        for(int i = 0; i < n; i++){

            map.put(i+1, new Node(i+1));

        }


        for(int i = 0; i < m; i++){

            int f = in.nextInt();

            int s = in.nextInt();

            Node nf = map.get(f);

            Node ns = map.get(s);

            nf.nexts.add(ns);

            ns.nexts.add(nf);

        }


        Node n1 = map.get(1);

        map.remove(1);

        List<Node> xl = n1.nexts;

        List<Node> nxl = new ArrayList<>();


        for (Map.Entry<Integer, Node> entry : map.entrySet()) {

            if(!xl.contains(entry.getValue())){

                nxl.add(entry.getValue());

            }

        }


        boolean pan = false;

        for(Node node : nxl){

            for(Node node1: xl){

                if(!node.nexts.contains(node1)){

                    pan = true;

                    break;

                }

            }

        }

        if(pan){

            System.out.println("No");

        }else{

            System.out.println("Yes");

        }

    }


    public static void main(String[] args){


        Scanner in = new Scanner(System.in);


        int n = in.nextInt();

        for(int i = 0; i < n; i++){

            process(in);

        }

    }

}


2018-09-09 21:26

第二题是先把ABC,分别放到不同的集合中,然后判断,如果是就直接remove,一次就过了....然鹅第一题不会....




public static void main(String[] args) {

// TODO Auto-generated method stub

int lowCount=0; 

Scanner s1=new Scanner(System.in);

List<Integer> a1=new ArrayList();

List<Integer> a2=new ArrayList();

List<Integer> a3=new ArrayList();

int count=Integer.parseInt(s1.nextLine());

for (int i = 0; i < count; i++) {

String io2 = s1.nextLine();

String[] str2 = io2.split("\\s+");

a1.add(Integer.parseInt(str2[0]));

a2.add(Integer.parseInt(str2[1]));

a3.add(Integer.parseInt(str2[2]));

}

for (int i = a1.size()-1 ; i >=0;i--) {

for (int j = 0; j <a1.size(); j++) {

if(a1.get(i) < a1.get(j) && a2.get(i) < a2.get(j) && a3.get(i) < a3.get(j)){

lowCount++;

a1.remove(i);

a2.remove(i);

a3.remove(i);

break;

}

}

}

System.out.println(lowCount);

}


2018-09-09 21:26
coder_HRDFNNQD 回复 coder_wbZcVqw7

我也18%,不过我没有排序,老哥我估计你排序出问题了

2018-09-09 21:45
coder_iXIn0Dno 回复 coder_4QEbTBqo
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main()
{
    int temp, n;
    double num;
    vector<int> old;
    cin >> n;
    while (cin >> temp) {
        old.push_back(temp);
    }
    sort(old.begin(),old.end());
    int len = old.size();
    if (len % 2 == 0) {
        num = (old[len / 2 - 1] + old[len / 2])/2.0;
    }
    else {
        num = old[(len - 1) / 2];
    }
    cout << num << endl;
    return 0;
}


2018-09-09 22:18
;

;

{
    ([] ) {
        scanner= (.);

        num = scanner.();
        [][] things = [num][];
        (i=;i<num;i++){
            scanner1 = (.);
            line = scanner1.();
            [] lines = line.();
            (j=;j<;j++){
                things[i][j] =.(lines[j]);
            }
        }
     res = (num,things);
        ..(res);
    }

    (,[][] ){
        res = ;
        count=;
        bgm:(i = ; i <-; i++) {

            (j = i+; j <; j++) {
                count++;
                ([i][]<[j][]&&[i][]<[j][]&&[i][]<[j][]){
                    res++;
                    bgm;
                }

            }


        }
        ..(+count);
        res;

    }

}


2018-09-09 23:55
coder_VTRlS23p 回复 coder_JZ66CPTJ

我的思路 int solve(string S, string T) { int s_len = S.length(); int t_len = T.length(); string cs(T); int num = 0; for (int i = 0; i<s_len-t_len+1; i++) {

	for (int j = 0; j<t_len; j++)
	{
		cs[j] = S[i+j];
	}
	int flag = 0;
	for (int m = 0; m<t_len; m++)
	{
		for (int n = 0; n<t_len; n++)
		if ((T[m] == T[n] && cs[m] != cs[n]) || (T[m] != T[n] && cs[m] == cs[n]))
			flag = 1;
	}
	if (flag == 0)
		num++;
}
return num;

}

2018-09-10 09:05
// n 记录出入的数组总的个数
var n = readInt()
// data 存储输入的数组
var data =[]
for(var i=0; i<n; i++){
    data.push(readInt())
}

// 选择排序 从小到大
for(var i=0; i<n; i++)
    for(var j=i; j< n; j++){
        if(data[i] > data[j]){
            var temp = data[i]
            data[i] = data[j]
            data[j] = temp
        }
    }

var sum = 0;
for(var i=0; i<n; i++){
    sum = sum + data[i];
}

if(n == 1){
    sum = data[0]
} else{
    if(n%2 != 0){
       sum = data[Math.floor((n-1)/2)]
    } else{
        sum = parseFloat((data[Math.floor((n-1)/2)] + data[Math.floor((n-1)/2+1)])/2);
    }
}
print(sum)


2018-09-10 10:48
coder_DQYC2P2R 回复 coder_wbZcVqw7

我也是18%的通过率

2018-09-10 20:46
添加回复
回到顶部