刷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】---学会总结回顾的更多相关文章

  1. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  2. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  3. 技术|程序员必须要学会Google搜索技巧

    程序员必须要学会Google搜索技巧 摘要: 因为Google在我天朝被墙,学FQ请通过Bing进行搜索如何FQGoogle搜索技巧我曾经多次劝我的另一个朋友花10分钟学习一下Google通配符的使用 ...

  4. 2015.12.29~2015.12.30真题回顾!-- HTML5学堂

    2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...

  5. [原创]AHA大会回顾

    AHA大会回顾 缘起 AHA之前参加了Daniel的培训,了解到AHA大会,觉得很高大上,开始有些心动.考虑到是工作时间,而且是外地,所以也就停留在心动层面了.之后与伯薇和四正吃饭,听说他们要去参加这 ...

  6. FMDB 二次封装工具类,让你快速学会封装,集成数据库

    来源:StrivEver 链接:http://www.jianshu.com/p/4c77aee0b41c 上个版本为了增加用户体验,部分页面集成了离线缓存数据功能,于是就在项目里使用了数据库管理离线 ...

  7. 学会Func

    学会Func 前言 首先你要会最基本的委托的使用,如果不会,看起来可能会有难度.. 不过第一个例子将帮你复习一下委托delegate 接下来通过几个例子就会学会怎么灵活使用Func了   委托回顾(d ...

  8. iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  9. 九天学会Java,第二天,算术运算

    算术运算 先回顾上次我们提到的编程特性 变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 第一天我们讲 ...

随机推荐

  1. Python--day40--datetime,socketserver,Threading模块分别是哪些模块的高层模块

  2. UVA 11922 Permutation Transformer —— splay伸展树

    题意:根据m条指令改变排列1 2 3 4 … n ,每条指令(a, b)表示取出第a~b个元素,反转后添加到排列尾部 分析:用一个可分裂合并的序列来表示整个序列,截取一段可以用两次分裂一次合并实现,粘 ...

  3. ActiveMQ安装报错Wrapped Stopped解决办法

    在安装ActiveMQ的时候遇到了这个问题,一直报Wrapper Stopped 先开始也是修改环境变量,重启电脑,发现没有用,后来打开任务管理器,关闭了erl.exe,就成功了. 原文地址:http ...

  4. zeppelin开启多个

    conf/zeppelin-env.sh 添加行: export ZEPPELIN_PID_DIR=/xx/zeppelin/run_2

  5. linux一个进程如何睡眠

    如果我们深入 <linux/wait.h>, 你见到在 wait_queue_head_t 类型后面的数据结构是非 常简单的; 它包含一个自旋锁和一个链表. 这个链表是一个等待队列入口, ...

  6. 【50.00%】【codeforces 747C】Servers

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  7. maxmind geoip2使用笔记

    客户需求如下,nginx的访问日志中ip,匹配出对应的国家,省份和城市,然后给我了一个maxmind的连接参考. 查找资料,有做成hive udf的使用方式, 我们项目中一直使用 waterdrop ...

  8. SQL常见命令

    SQLite常见命令:https://www.cnblogs.com/senior-engineer/p/7028972.html

  9. QString 转换为 char *

    一.QString 转换为 char * 将 QString 转 char *,需要用到 QByteArray 类,QByteArray 类的说明详见 Qt 帮助文档. 因为 char * 最后都有一 ...

  10. CentOS系统将UTC时间修改为CST时间方法

    世界协调时间(Universal Time Coordinated,UTC): GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地 ...