4/4 这周莫名得忙,一天是做编译,一天是做模式识别作业,(一天刷魔兽皮肤),周末玩了两天,总的来说还是松懈了,大概只做了两天的leetcode,刷了10道题,羞愧羞愧。

决定每次把代码附上在这个总结里,一来是方便,二来是有利于以后回顾。(其实想找一个更好的排列方法,以后再说吧)


283. Move Zeroes

将数组中的0移到数组末尾,是正常的for循环,不过in-place要考虑一下了,总之我看了答案

依次调换,同时记录非0的个数

(万恶的校园网,贴不上代码)

237. Delete Node in a Linked List

删除链表节点,答案很奇怪,也想知道为啥,这种解答我可以理解

class Solution {
public:
void deleteNode(ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
};

但这种解答我就不知为什么

void deleteNode(ListNode* node) {
*node = *node->next;
}

换成这样就运行失败

void deleteNode(ListNode* node) {
node = node->next;
}

算是个不懂的地方

260. Single Number III

返回数组中出现是single number,因为是多个numbers,所以用vector加上push_back()返回,很方便

class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<int> single;
int i = ;
if(nums[i]!=nums[i+])
{
single.push_back(nums[i]);
}
for(i=;i<nums.size()-;i++)
{
if(nums[i]!=nums[i-]&&nums[i]!=nums[i+])
{
single.push_back(nums[i]);
}
}
if(nums[i]!=nums[i-])
{
single.push_back(nums[i]);
}
return single;
}
};

100. Same Tree

判断两个树是否完全相同,看上去很简单,但是返回值是时候难到我了,如何在子树(即递归多次以后)发现不同的时候,将结果正确地返回到第一层递归里,而且不用全局,看了答案才发现自己太蠢了,简单的尾递归。算是有了解了吧。

238. Product of Array Except Self

数组对应的值和其他值相乘,算上有一个0的边界条件和有2个以上0的边界条件即可

class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
int ele = ;
int count0 = ;
for(int i=;i<nums.size();i++){
if(nums[i]==) count0++;
else ele = ele*nums[i];
} if(count0>)
{
for(int i=;i<nums.size();i++)
{
nums[i] = ;
}
}
else if(count0==)
{
for(int i=;i<nums.size();i++)
{
if(nums[i]== ) nums[i] = ele;
else nums[i] = ;
}
}
else
{
for(int i=;i<nums.size();i++)
{
if(nums[i]== ) nums[i] = ele;
else nums[i] = ele/nums[i];
}
}
return nums;
}
};

242. Valid Anagram

For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.

这我想得很复杂,看了答案真是羞愧,应该多用用int数组了,创建一个长度26的数组。

class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size()!=t.size())
{
return false;
}
int n = s.size();
int count[] = {};
for(int i = ;i < n;i++)
{
count[s[i] - 'a']++;
count[t[i] - 'a']--;
}
for(int j = ;j < ;j++)
{
if(count[j]) return false;
}
return true;
}
};

168. Excel Sheet Column Title

1 -> A 2 -> B 3 -> C
...
26 -> Z 27 -> AA 28 -> AB

简单的余数和除数的题,回顾了一下

class Solution {
public:
string convertToTitle(int n) {
int x,y;
string s = "";
while(n)
{
x = (n-)/;
y = (n-)%;
if(y)
{
string s1 = "";
s1 += y+'A' ;
s = s1 + s;
}
else
{
s = 'A' + s; }
n = x;
} return s;
}
};

171. Excel Sheet Column Number

和上一题相反的题,根据string返回int,已知string长度(.size())那就简单很多了

(gtmd校园网,gtmd方校长,网页又崩了)

217. Contains Duplicate

判断数组中是否有相同数,先sort再for,水题。

class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
if(nums.size()<) return false;
sort(nums.begin(),nums.end());
for(int i = ;i < nums.size()-;i++)
{
if(nums[i]==nums[i+]) return true;
}
return false;
}
};

319. Bulb Switcher

灯泡问题,我先写了一个长的代码,结果999999超时

        vector<int> nums(n,);
if(n==) return ;
if(n==) return ;
for(int i = ;i <= n;i++ )
{
if(i==)
{
for(int j=;j<n;j=j+)
{
nums[j] = ;
}
}
else if(i<n)
{
for(int j=i-;j<n;j=j+i)
{
nums[j] = nums[j]^;
}
}
else if(i==n)
{
nums[n-] = nums[n-]^;
}
}
int counts = ;
for(int j=;j<n;j++)
{
if(nums[j]) counts++;
}
return counts;

结果答案是直接返回sqrt。。

class Solution {
public:
int bulbSwitch(int n) {
/*
vector<int> nums(n,1);
if(n==0) return 0;
if(n==1) return 1;
for(int i = 1;i <= n;i++ )
{
if(i==2)
{
for(int j=1;j<n;j=j+2)
{
nums[j] = 0;
}
}
else if(i<n)
{
for(int j=i-1;j<n;j=j+i)
{
nums[j] = nums[j]^1;
}
}
else if(i==n)
{
nums[n-1] = nums[n-1]^1;
}
}
int counts = 0;
for(int j=0;j<n;j++)
{
if(nums[j]) counts++;
}
return counts;
*/
return sqrt(n);
}
};

169. Majority Element

返回一个占数组超过一半的数(一定存在)

先sort,然后直接取中间数,机智如我

class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(),nums.end());
return nums[nums.size()/];
}
};

第二周leetcode的更多相关文章

  1. 第二周 Leetcode 493. Reverse Pairs(HARD)

    leetcode 493跟经典的逆序对问题没有什么区别, 首先考虑对数组前半部和后半部求逆序对数,若能保证两段数组都有序,则显然可以在线性时间内求出对数. 所以我们采用归并排序的方法,一方面让数组有序 ...

  2. ARTS第二周

    第二周. 1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的技术文 ...

  3. Surprise团队第二周项目总结

    Surprise团队第二周项目总结 项目进展 已实现五子棋人人模式部分 人人模式: 基本方式:采取黑棋先行,黑白交替的下棋顺序. 模式:通过鼠标点击相应棋盘中的"交叉点",在lay ...

  4. python课程第二周重点记录

    python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...

  5. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  6. 20145304 刘钦令 Java程序设计第二周学习总结

    20145304 <Java程序设计>第2周学习总结 教材学习内容总结 java可区分基本类型和类类型(即参考类型)两大类型系统. 基本类型主要可区分为整数.字节.浮点数.字符与布尔. 整 ...

  7. 20145330孙文馨 《Java程序设计》第二周学习总结

    20145330孙文馨第二周学习总结 第二周相比于第一周对java语言有了深一点的了解,也意识到多敲代码才是学习计算机语言的最好方法. 教材内容总结 类型.变量与运算符 *基本类型 整数(short. ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  9. Linux内核设计第二周——操作系统工作原理

    Linux内核设计第二周 ——操作系统工作原理 作者:宋宸宁(20135315) 一.实验过程 图1 执行效果 从图中可以看出,每执行my_ start_ kernel函数两次或一次,my_ time ...

随机推荐

  1. 【转】Java transient关键字使用小记

    哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transi ...

  2. Ubuntu 18.04 gcc降级为4.8.5版本

    1. 下载gcc/g++ 4.8 $ sudo apt-get install -y gcc-4.8.5 $ sudo apt-get install -y g++-4.8.5 2.  链接gcc/g ...

  3. 【失败】CentOS 6.5安装VNCserver 并开启远程桌面

    如果你的centos系统压根就没装CDE.Gnome等桌面,那你先执行这条命令,把GUI环境装上,no GUI no VNC yum -y groupinstall 'GNOME Desktop En ...

  4. Python开发之用户密码存储

    在各种线上应用中,用户名密码是用户身份认证的关键,它的重要性不言而喻.一方面,作为保护用户敏感数据的钥匙来说,一旦被破解,系统将敞开大门完全不设防.另一方面,密码这把钥匙本身就是非常敏感的数据:大多数 ...

  5. 跟我学算法-tensorflow 实现卷积神经网络

    我们采用的卷积神经网络是两层卷积层,两层池化层和两层全连接层 我们使用的数据是mnist数据,数据训练集的数据是50000*28*28*1 因为是黑白照片,所以通道数是1 第一次卷积采用64个filt ...

  6. iframe 元素会创建包含另外一个文档的内联框架(即行内框架)

    HTML 与 XHTML 之间的差异 在 HTML 4.1 Strict DTD 和 XHTML 1.0 Strict DTD 中,不支持 iframe 元素. 提示和注释: 提示:您可以把需要的文本 ...

  7. FluentValidation 模型验证

    FluentValidation 是 .NET 下的模型验证组件,和 ASP.NET MVC 基于Attribute 声明式验证的不同处,其利用表达式语法链式编程,使得验证组件与实体分开.正如 Flu ...

  8. Python_01-入门基础

    以后我会发表一系列python脚本的学习资料,python版本为2.x. 目录: 1 Python入门基础 1.1 学习资源 1.2 所有语言的入门程序---Hello World!  1.3 帮助函 ...

  9. 【hdu4347】The Closest M Points 【KD树模板】

    题意 一个k维空间,给出n个点的坐标,给出t个询问,每个询问给出一个点的坐标和一个m.对于每个询问找出跟这个点最接近的m个点 分析 kd树的模板题. #include <cstdio> # ...

  10. UNITY5 为什么Inspector视图中脚本前面的勾选框没了

    结果发现了一个奇葩的问题..凡事脚本没有勾选项的,都是因为你的脚本没有Start方法..如果你想让勾选框显示出来,把如下方法加入即可,不信你可以试试.嘿嘿.