今日小结——20190506(LeetCode刷题+kinect学习使用)

一周没写过总结了哈哈哈哈哈哈哈手生!

一、#24:两两交换链表中的节点

起手先判断特殊链表,即空链表或者只有一个节点的链表,如果是正常两个或两个以上节点的链表就继续进行,当当前节点以及下一节点不为空时,进行简单的换位操作,换位结束后指针指向下下个节点,也就是一次跳过俩节点继续进行换位操作,直到后面没有节点或者只有一个节点,一道简单题。。。不知道怎么就归到中等题了。。代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(head==NULL||head->next==NULL)
        {
            return head;
        }
        else
        {
            ListNode* p=head;
            while(p!=NULL&&p->next!=NULL)
            {
                int tmp=p->next->val;
                p->next->val=p->val;
                p->val=tmp;
                p=p->next->next;
            }
            return head;
        }
    }
};

二、#26 删去排序数组中的重复项

这个题还是要先判断特殊情况,判断完了想到两个办法,第一个是认真做的,第二个是不认真做的。。。

认真做的办法是,因为这是个排好序的数组,所以可以用第一个数作为新数组的第一个量,然后遍历输入数组,若相等,则循环下一个,不相等就吧这个新值push_back到新数组中,遍历结束,新数组就是不重复的数组了,然后题目要求是在原数组修改,但是我用了新数组,本以为不行了,但是我把新数组都赋值给了原数组,输出。。。没想到成了,原来他的调用模式是截取返回和长度额数组进行输出,所以我不用管nums后面的数是啥,只要吧前面改成删除后的就行了,这也算是利用题目漏洞解题吧。。。

不认真的办法就比较骚了,利用之前总结过的map,map很大的特点就是key不会重复,那么我用nums[i]的值去作为map的key值,然后value的值随便++就好,那么这样就自动删除了重复的key,因为在有了一个key之后,相同的key不会被写入map容器,然后还是用前面那个方法直接把map的key值一一对应赋值给原数组,进行输出,简单快捷,还骚。。。

能用这两个办法只能说是这个题目漏洞太大。。。第一个方法好懂,所以就贴出第二个方法的代码:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        map<int,int> mymap;
        for(int i=0;i<nums.size();i++)
            mymap[nums[i]]++;
        map<int,int>::iterator it=mymap.begin();
        for(int i=0;i<mymap.size();i++)
        {
            nums[i]=it->first;
            it++;
        }
        int cnt=mymap.size();
        return cnt;
    }
};

 三、kinect使用

这个深度相机是微软好多年前的一款,现在停产了,但是还是深度相机的经典,一直都想玩一下。

这个家伙适配器就有俩,乱七八糟连线有点乱。。。

首先安装官网的SDK,安装这个的时候一定不要连USB,血的教训。。。这个安装主要是为了两个部分,一个是辅助读图像的软件使用测试,一个是kinect的驱动程序,安装完之后一定要重启电脑!!!关机在开是不行的。。。

然后插电源,插u口,打开设备管理器查看驱动是否响应。。。终于响应了 蛋疼死了。。。

然后用SDK Browser检查连接环境是否有问题

之后用kinect studio开打开相机,有图像就表示成功了!

 需要配置VS,把库目录,包含目录以及附加依赖项的文件全部写到VS配置中,再配置一下opencv,就可以开始二次开发写程序了!

 折腾了很久,研究了kinect的库函数,终于用程序打开相机并拍摄惹!很舒服!以下是深度图(就是效果不咋地,明儿继续调。。。)

 上面是我的胳膊和我的表,可以看出来,连表链的孔都不能完全识别出来深度,可以说这种深度相机真的不适合做微小缺陷识别。。。但是也可能是和我调节有关,明儿再试试,不行就周三报告老师了。。。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值