日常刷题

LeetCode #16 最接近的三数之和

链接:https://leetcode-cn.com/problems/3sum-closest/

昨天三数之和的变种,难度稍微增加了一点,暴力解了一遍,二分做了一遍。然后两遍都没有AC。

二分法只过了90%的数据,暴力解题毫无疑问的timeout。下面是代码

代码:

二分法:

class Solution:def threeSumClosest(self, nums, target):new_nums = 0 # 创建储存结果的变量nums.sort()  # 对原有数组进行排序处理minaway = 100for i in range(len(nums)-2): # 从小到大遍历所有的元素 left  = i+1  # 创建左指针right = len(nums)-1  # 创建右指针while left < right:ident = nums[left] + nums[right] + nums[i]  #将nums[i]加上最大的 和 最小的 数字away  = abs(ident - target) # 计算三数之和与target的距离if away < minaway : # 判断距离是否为已知的最近距离minaway = away  # 对最小距离指针进行更新 new_nums = ident #对结果进行更新if new_nums < target :left += 1  # 更新左指针elif new_nums > target :right -= 1 #更新右指针else : #当数据全部遍历完毕return new_nums  # 返回结果

暴力解法:

class Solution:def threeSumClosest(self, nums, target):minaway = 100000000000away = 0for i in range(len(nums)):for j in range(i+1,len(nums)):for k in range(j+1,len(nums)):if abs(nums[i]+nums[j]+nums[k]-target) < minaway:away = nums[i]+nums[j]+nums[k]minaway = abs(nums[i]+nums[j]+nums[k]-target)return away

LeetCode #26 删除排序数组中的重复项

链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/

很水的写法,遍历n-1个元素,和后面一位比较,如果重复的话,remove nums[i].

代码:

class Solution:def removeDuplicates(self, nums):""":type nums: List[int]pe: int"""i=0while i<len(nums)-1:if nums[i]==nums[i+1]:nums.remove(nums[i])else:i=i+1return len(nums)

LeetCode #27 移除元素

链接:https://leetcode-cn.com/problems/remove-element/description/

很上面那道题类似,解法差不多,remove 即可

class Solution:def removeElement(self, nums, val):while val in nums:nums.remove(val)return len(nums)

LeetCode #31 下一个排序

链接:https://leetcode-cn.com/problems/next-permutation/description/

这道题 比较有意思。

第一次过了3/5的数据,没有考虑到最优解的情况。

代码如下:

class Solution:def nextPermutation(self, nums):""":type nums: List[int]:rtype: void Do not return anything, modify nums in-place instead."""i = len(nums)-1while i>0:if nums[i] > nums[i-1]:t = nums[i-1]nums[i-1] = nums[i]nums[i] = tbreaki -= 1else:nums = nums[::-1]

思路:

从后往前遍历,寻找升序子列表的断点。然后断点和升序子列表的第一位交换。

错误:

不是最优解。例如:1,3,2 。如果按照上面算法,得出的结果是3,1,2。而最优解是2,1,3。

改进的代码AC了。

如下:

class Solution:def nextPermutation(self, nums):""":type nums: List[int]:rtype: void Do not return anything, modify nums in-place instead."""i = len(nums) - 1while i>0:if nums[i] <= nums[i-1]:  # 从末至首寻找升序子列表i -= 1else :  # 如果升序子列表中断,则跳出循环breakif i > 0:  # 如果i>0,则证明num列表不全是升序元素j = len(nums) - 1while nums[j] <= nums[i-1] : # 从尾部开始找第一个比断点大的数字确保是最优解j -= 1nums[j],nums[i-1] = nums[i-1],nums[j]  # 断点与该数字进行值的互换new_list = sorted(nums[i:])  # 对断点之后进行升序排列,确保数字最小k = 0for m in range(i, len(nums)):nums[m] = new_list[k]k += 1else :nums.sort()

思路:

从后往前找升序子列表(如 :1,3,2,1),寻找断点1(如1,3,2,1)。再从尾部开始找第一个比断点大的数字并于断点1进行交换(1,3,2,1)>>(2,3,1,1),然后再从断点开始进行从头至尾的升序排序(2,1,1,3),确保数字最小即最优解。

转载于:https://www.cnblogs.com/mygzhh/p/9297178.html

【100Days of 100 line Code】2 day相关推荐

  1. 【100Days of 100 line Code】3 day

    今天事情比较多,晚上临时刷了几道水题.基本上用一些小技巧就可以AC的,没有什么太大的难度 第三天了 LeetCode #7 反转整数 class Solution:def reverse(self, ...

  2. 分享好用的文本代码编辑器和源代码编辑器【notepad++,Visual Studio Code】

    文章目录 notepad++介绍 Visual Studio Code介绍 今天在这里给学习者和开发者分享好用的代码编辑器[notepad++]和[Visual Studio Code] notepa ...

  3. 9型转x型 cobol_【科研模型100例32】A型/X型分子筛

    [例32]A型/X型分子筛难度:★★★知识点:多边形 倒角 顶点捕捉 本期教程继续我们的多边形建模之旅,主要知识点为:多边形桥接和顶点捕捉.以上图中的分子筛模型为例,左边为X type,右边为A ty ...

  4. Apache Oltu 实现 OAuth2.0 服务端【授权码模式(Authorization Code)】

    要实现OAuth服务端,就得先理解客户端的调用流程,服务提供商实现可能也有些区别,实现OAuth服务端的方式很多,具体可能看 http://oauth.net/code/ 各语言的实现有(我使用了Ap ...

  5. bat 命令行执行 java(jar)获取返回值 【ERRORLEVEL、System.exit(code)】

    ■前言 bat调用java,如何判断java运行正常终了 ■实现 1.命令行中, 使用 %ERRORLEVEL% ↓ERRORLEVEL的介绍 https://blog.csdn.net/sxzlc/ ...

  6. python 生成 知乎粉丝数据报告 【简单上手100行代码】

    本次爬取知乎粉丝的浅数据,只用到了很少的爬虫知识.等我有空了,用scrapy+多线程+深度数据+生成h5报告,做一期高级点的. 2019年8月21日测试可用 from selenium.webdriv ...

  7. 【Pandas数据处理100例目录】Python数据分析玩转Excel表格数据

    前言 大家好,我是阿光. 本专栏整理了<Pandas数据分析处理>,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据. 正在更新中~ ✨

  8. Angular7 + 各个省市地图【传入不同的行政区code自动生成对应的echarts地图】

    http://datav.aliyun.com/tools/atlas/#&lat=38.3939818785999&lng=79.2311982583502&zoom=7.5 ...

  9. DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能

    DL之DNN:自定义MultiLayerNet[6*100+ReLU,SGD]对MNIST数据集训练进而比较[多个超参数组合最优化]性能 目录 输出结果 设计思路 核心代码 输出结果 val_acc: ...

最新文章

  1. Ferris教程学习笔记:js示例2.13 简易JS年历
  2. 05-RARP: 逆地址解析协议
  3. Pavel and Triangles(贪心)
  4. ansible roles角色案例:实现httpd角色
  5. C# 注册表控制++ Autorun after windows
  6. C++语言的技术性规则
  7. 自考那些事儿(四):软件开发工具(理论篇)
  8. restframework之节流
  9. Nginx gzip参数详解及常见问题(已解决)
  10. tomcat7下载地址
  11. Alibaba代码检查工具插件
  12. 探秘广场舞:中老年市场绝佳切口?
  13. 人工智能行业数据安全解决方案
  14. 通过ip如何免费反查域名?
  15. oracle改密码sql语句,Oracle 修改数据库密码
  16. 硬盘结构及raid磁盘阵列
  17. 安卓多媒体开发!Android高级工程师面试实战,系列篇
  18. appium Original error: Could not proxy command to the remote server. Original error: socket hang up
  19. 普歌-(mac m1亲身教程)iterm配置oh-my-zsh以及iterm配置dracula主题
  20. 数值分析各种算法C语言

热门文章

  1. c++ 字符减去‘0’_字符串为什么减‘0’成整数
  2. java 反转二叉树 非递归_【刷算法】翻转二叉树的递归和非递归解法
  3. linux日志打印规则,Linux 打印简单日志(一)
  4. java怎么给坦克上图片_Java坦克大战 (七) 之图片版
  5. Python数据结构与算法(1.4)——Python基础之控制结构
  6. 雪碧图PHP,Css Sprite(雪碧图、精灵图) - SegmentFault 思否
  7. c++用数组初始化向量_用C ++初始化向量
  8. android数据绑定_Android RecyclerView数据绑定
  9. scala 访问修饰符_Scala访问修饰符–私有,受保护的和公共的
  10. TinyLog –轻量级Java日志记录框架教程