【LC_Overview1_5】---学会总结回顾
刷LeetCode题目一周,主要采用C++和Python编程手段,截至目前做了5道简单的leetcode题目,做下阶段性的小结:
小结主要通过手撕代码,复习加回顾,尽量避免自己眼高手低的情况发生,对于自己还不熟悉的内容,再次标注出来吗,以下是手撕代码的记录:
Python实现:
第二遍编程中出现的问题和不熟的地方,都已标注出来,着重复习,
class Solution:
"""
注意:
1. Python预研在处理负数时,最好将其转换成正数,然后最后把结果乘-1
2. 学到了一种赋值+判断的写代码方式
"""
def ReverseNum(self,num:int)->int:
rev = 0;
temp:int = num if num>0 else -num
while (temp):
pop = temp%10
rev = rev*10 + pop
temp = temp//10 INT_MAX = pow(2,31)-1
INT_MIN = pow(2,31)*(-1) if num > 0:
if rev > INT_MAX:
return 0
else:
if (-rev) < INT_MIN:
return 0
return rev if num>0 else -rev """
注意:
无
"""
def isPalindrome(self,num:int)->bool:
if num < 0:
return False
rev = 0
temp = num
INT_MAX = pow(2,31)-1
while(temp):
pop = temp%10
rev = rev*10 + pop
temp = temp//10 if (rev != num):
return False
return True """
注意:
1. 当长度为1的时候,for循环中的算法将不起作用
2. python的字符串没有最后的'\0',因此一定要考虑最后一个越界的影响
"""
def romanToNum(self,strs)->int:
table = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'m':1000} if (len(strs) == 1):
return table[strs[0]]
rev = 0
for i in range(len(strs)-1):
if table[strs[i]] < table[strs[i+1]]:
rev -= table[strs[i]]
else:
rev += table[strs[i]]
return (rev + table[strs[i+1]]) """
注意:
当输入为空列表时,需要第一个if判断
当输入列表含有空字串时,则需要return时判断i的值是否大于0
"""
def longestCommonPrefix(self, strs)->str:
if len(strs)==0:
return "" for i in range(len(strs[0])):
for j in range(1,len(strs)):
if i>=len(strs[j]) or strs[0][i] != strs[j][i]:
return strs[0][0:i] if i>0 else ""
return strs[0]
C++实现
class Solution{
public:
int ReverseNum(int num);
bool isPalindrome(int num);
int RomanToNum(string RomanStr);
string longestCommonPrefix(vector<string> &strs);
}; int Solution::ReverseNum(int num)
{
long long rev = ;
int temp = num;
while(temp)
{
int pop = temp%;
rev = rev* + pop;
temp = temp/;
if(rev < INT_MIN || rev > INT_MAX)
{
return ;
}
}
return rev;
}; /*
注意:
1. 数据在发生反转的时候,一定要考虑溢出的情况,C++中可以采用更宽字节类型的变量来暂存结果,python可能需要溢出
*/
bool Solution::isPalindrome(int num)
{
if (num < ){
return false;
}
long long rev = ;
int temp = num;
while(temp)
{
int pop = temp%;
rev = rev* + pop;
temp /= ;
}
if (num != rev)
return false;
return true;
}; /*
注意:
1. 再次重温了下map的使用方式
*/
int Solution::RomanToNum(string RomanStr)
{
int rev = ;
if (RomanStr.empty())
return ;
map<char,int> table = {
{'I',},
{'V',},
{'X',},
{'L',},
{'C',},
{'D',},
{'M',}
}; int length =RomanStr.size();
for(int index=; index<length; index++)
{
if(table[RomanStr[index]] < table[RomanStr[index+]])
{
rev += (-) * table[RomanStr[index]];
continue;
}
rev += table[RomanStr[index]];
}
return rev;
}; /*
注意:
1. vector的使用方法
2. substr的使用方法
3. C++中对于字串返回可以直接返回""",不像python要注意返回空字串和空列表的区别
*/
string Solution::longestCommonPrefix(vector<string> &strs)
{
if (strs.size()== || strs[].size()==)
{
return "";
} for(int i=; i<strs[].size(); i++)
{
for(int j=; j<strs.size(); j++)
{
if (strs[][i] != strs[j][i]){
return strs[].substr(,i);
}
}
}
return strs[];
}
【LC_Overview1_5】---学会总结回顾的更多相关文章
- [C#] C# 知识回顾 - 学会处理异常
学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...
- [C#] C# 知识回顾 - 学会使用异常
学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...
- 技术|程序员必须要学会Google搜索技巧
程序员必须要学会Google搜索技巧 摘要: 因为Google在我天朝被墙,学FQ请通过Bing进行搜索如何FQGoogle搜索技巧我曾经多次劝我的另一个朋友花10分钟学习一下Google通配符的使用 ...
- 2015.12.29~2015.12.30真题回顾!-- HTML5学堂
2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...
- [原创]AHA大会回顾
AHA大会回顾 缘起 AHA之前参加了Daniel的培训,了解到AHA大会,觉得很高大上,开始有些心动.考虑到是工作时间,而且是外地,所以也就停留在心动层面了.之后与伯薇和四正吃饭,听说他们要去参加这 ...
- FMDB 二次封装工具类,让你快速学会封装,集成数据库
来源:StrivEver 链接:http://www.jianshu.com/p/4c77aee0b41c 上个版本为了增加用户体验,部分页面集成了离线缓存数据功能,于是就在项目里使用了数据库管理离线 ...
- 学会Func
学会Func 前言 首先你要会最基本的委托的使用,如果不会,看起来可能会有难度.. 不过第一个例子将帮你复习一下委托delegate 接下来通过几个例子就会学会怎么灵活使用Func了 委托回顾(d ...
- iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- 九天学会Java,第二天,算术运算
算术运算 先回顾上次我们提到的编程特性 变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 第一天我们讲 ...
随机推荐
- P1107 栈
题目描述 背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈). 栈的重要性不言 ...
- SVN常用命令之checkout
官方解释,请参考:http://www.subversion.org.cn/svnbook/nightly/svn.ref.svn.c.checkout.html 常用检出命令: svn co htt ...
- H3C 什么是路由
- H3C IP地址拒绝及释放
- H3C进入目录---用户视图
进入logfile文件目录 <H3C>cd logfile/ //进入目录 <H3C>pwd //显示当前所属的目录 cf:/logfil ...
- UE4 学习
1.官方文档:https://docs.unrealengine.com/en-US/index.html 2.入门教程: (1)C++ 程序员如何入门 UE 4:https://blog.csdn. ...
- 【Linux】tar压缩解压缩笔记
tar -c, --create create a new archive(建立压缩档案) -x, --extract, --get extract files from an archive(解压) ...
- AutoCad .Net二次开发求两曲线最小距离
测试结果: 主要思路:假设有两条曲线分别是c1和c2,把c1按照1的距离划分我这里用变量jd表示,得到一个曲线集合coll,然后遍历coll,得到coll中每一个曲线的两个端点,再用这两个端点分别求离 ...
- .bash_profile 文件
1,当 .bash_profile 文件输入有误的时候,所有命令行都会不好使 输入 export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin ...
- 从头学pytorch(七):dropout防止过拟合
上一篇讲了防止过拟合的一种方式,权重衰减,也即在loss上加上一部分\(\frac{\lambda}{2n} \|\boldsymbol{w}\|^2\),从而使得w不至于过大,即不过分偏向某个特征. ...