zoukankan      html  css  js  c++  java
  • 第9周总结

    每周总结:

    这周一个div2和一个div3(我是翻译的,然后还翻译错了,emmmm,一定一定不能漏字,嗯,而且不能猜样例,嗯)

    A题:

    题目:https://leetcode-cn.com/contest/college/2019-spring/problems/campus-bikes/

    题意:

    找到人和车最小的距离并匹配,如果距离相等时,选工人序号最小的,如果分配方法有很多,选车序号最小的。

    用了二维vector,再排个序,判断加入即可

    代码:

    class Solution {
    public:
        struct node{
            int idwork;
            int idbike;
            int dis;
        };
        static bool cmp(const node &a,const node &b){//需要加static
            if(a.dis==b.dis){
                if(a.idwork==b.idwork){
                    return a.idbike<b.idbike;
                }
                else
                    return a.idwork<b.idwork;
            }
            else
                return a.dis<b.dis;
        }
        vector<int> assignBikes(vector<vector<int>>& workers, vector<vector<int>>& bikes) {
            int n=workers.size();
            int m=bikes.size();
            bool visw[n];
            bool visb[m];
            vector<int> ret(n);
            vector<node> tmp;
            memset(visw,0,sizeof(visw));
            memset(visb,0,sizeof(visb));
            node via;
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    via.idwork=i;
                    via.idbike=j;
                    via.dis=abs(workers[i][0]-bikes[j][0])+abs(workers[i][1]-bikes[j][1]);//计算距离
                    tmp.push_back(via);
                }
            }
            sort(tmp.begin(),tmp.end(),cmp);
            int cnt=0;
            for(int i=0;i<tmp.size();i++){
                if(!visw[tmp[i].idwork]&&!visb[tmp[i].idbike]){
                    ret[tmp[i].idwork]=tmp[i].idbike;
                    visw[tmp[i].idwork]=true;
                    visb[tmp[i].idbike]=true;
                    cnt++;
                }
                if(cnt==n)
                    break;
            }
            return ret;
        }
    };

    B题:

    题目:https://leetcode-cn.com/contest/college/2019-spring/problems/confusing-number/

    题意:

    判断翻转的数字是不是数字,与原数字是否相同。

    (做的时候错了几次,注意点:是整个序列翻转,不是一个,注意相同的和含有0的数字)

    提交方式有点不太习惯。

    代码:

    class Solution {
    public:
        bool confusingNumber(int N) {
            int cnt=0,a[100];
            int temp=N;
            while(N>0){
                //if(N%10!=0)
                    a[cnt]=N%10;
                N/=10;
                cnt++;
            }
            int flag=0;
            for(int i=0;i<cnt;i++){
                if(a[i]==2||a[i]==3||a[i]==4||a[i]==5||a[i]==7){
                    flag=1;
                    break;
                }
            }
            if(flag==0){
                int b=0;
                for(int i=0;i<cnt;i++){
                    if(a[i]==9)
                        a[i]=6;
                    else if(a[i]==6)
                        a[i]=9;
                    else a[i]=a[i];
                    b=b*10+a[i];
                }
                if(b==temp) flag=1;
                
            }
            if(flag==1) return false;
            else return true;
        }
    };
  • 相关阅读:
    浅谈ES6
    iframe的应用
    vue时时监听input输入框中 输入内容 写法
    点击模态框滑动出来 抽屉
    this.$router 和this.$route 的区别
    iview框架 两侧弹框 出现第二层弹框 一闪而过的问题
    input框中的必填项之取消当前input框为必填项
    v-model 的修饰符
    单页面开发和多页面开发的优缺点
    原型继承+借用构造函数继承 的一些理解
  • 原文地址:https://www.cnblogs.com/zhyyyy/p/10787486.html
Copyright © 2011-2022 走看看