剑指offer笔记(二) 第11题至第17题

本文记录了使用Python解决剑指Offer中的7道题目,包括旋转数组的最小数字、矩阵中的路径、机器人的移动范围、剪绳子、二进制中1的个数、数值的整数次方及大数打印。通过分析和代码展示,阐述了解题思路和关键点。
摘要由CSDN通过智能技术生成


前言

这次主要记录剑指offer的7道题,主要使用的语言是python,下面将对这7道题的一些感悟和知识点进行汇总,这周的任务 完成!


提示:以下是本篇文章正文内容,下面案例可供参考 截图来源于LeetCode

一、JZ11 旋转数组的最小数字

在这里插入图片描述

  旋转数组就是两个升序的子数组组成,因而指针的移动在左右数组之间切换令mid=(left+right)/2
  1)当numbers[mid] > numbers[right] 则left = mid+1;#跑到后面的数组
  2)当numbers[mid] < numbemidrs[right] 则right = mid;#准确定位到前面的数组 [1,5,1]的特例
  3)当numbers[mid] = numbers[right] 则right = right-1;

以下为程序源码:
在这里插入图片描述

二、JZ12 矩阵中的路径

在这里插入图片描述

  这道题没需要用回溯法和深度优先搜索,参考香辣鸡排蛋包饭的讲解视频去理解这道题比较顺利一些,下图为整体的理解思路,图片截自香辣鸡排蛋包饭的视频。
在这里插入图片描述
  其中涉及到路径重复的问题,如下图所示,每一次的覆盖均有数据进行记录 ,因而如果回到上一层,依旧可以对原数据进行还原
在这里插入图片描述
以下为程序源码:
在这里插入图片描述

三、JZ13 机器人的移动范围

在这里插入图片描述
  此题与JZ12 很是相近,但涉及到动态规划问题,参见蛋包饭 的讲解视频和图片对其进行理解。
在这里插入图片描述
以下为程序源码:
在这里插入图片描述

四、JZ14 剪绳子

在这里插入图片描述

  这里直接贪心(数学推导)来看了。
  具体 数据推到如下图所示
在这里插入图片描述

以下为程序源码:
在这里插入图片描述

五、JZ15 二进制中 1 的个数

  比较简单且经典的一道题,令 n 与 (n-1) 位与 即可!
在这里插入图片描述

以下为程序源码:
在这里插入图片描述

六、JZ16 数值的整数次方

在这里插入图片描述
  这道题就不细细描述了,LeetCode官方的解释非常棒,想了解直接去走这道题就行!这里主要的一个难点就是:二进制与十进制的来回认知问题,另外Krahets大神地讲解非常地棒,特别推荐去看一下!下面的截图来自Krahets的讲解内容。
在这里插入图片描述
以下为程序源码:
在这里插入图片描述

七、JZ17 打印从1到最大的n位数

  这道题就不多说了,参见我的另外一篇blog:JZ17 大数的打印

八、总结

  慢慢步入正轨,最近的生活学习有些乏力,需要多运动一下,另外忽然觉着安妮宝贝的一句话特别棒:
  任何一件事情,只要心甘情愿,总是能够变得简单!
  希望如此吧!
  不过,最后仍然附上一句我特别喜欢的英文诗,节选自喜剧大师卓别林的 As I began to love myself :
  Even stars collide, out of their crashing new worlds are born;
  Today I know, THAT IS LIFE.
  美极了,有点 沉舟侧畔千帆过,病树前头万木春 的既视感了。 ha =-= ha

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值