剑指offer--Day6

Posted Recently 祝祝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer--Day6相关的知识,希望对你有一定的参考价值。

Day6:剑指 Offer 17. 打印从1到最大的n位数

力扣链接:剑指 Offer 17. 打印从1到最大的n位数

题目:输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

题解:首先需要知道,指用输入的4,位数为4的最大的值:9999,其实就是10x10x10x10-1(10的四次方),n位数的最大值就是10的n次方。

class Solution 
    public int[] printNumbers(int n) 
        int maxnum = (int)Math.pow(10,n); 
        int[] arr= new int[maxnum-1];
        for(int i=1;i<maxnum;i++)
            arr[i-1]=i;
        
        return arr;
    

Day6:剑指 Offer 18. 删除链表的节点

力扣链接:剑指 Offer 18. 删除链表的节点
写过前边的几道题目之后,这道题目就变得简单多了,利用链表自身next的规则,遍历删除

题目:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。

题解:利用链表移动的规则,除去null与第一个数为head的规则,不断遍历next,如果遇到val==目标值。下一个值直接指向下下一个值。

/**
 * Definition for singly-linked list.
 * public class ListNode 
 *     int val;
 *     ListNode next;
 *     ListNode(int x)  val = x; 
 * 
 */
class Solution 
    public ListNode deleteNode(ListNode head, int val) 
            if(head==null)
                return null;
            

            if(head.val ==val)
                return head.next;
            
            ListNode temp = head.next;
            ListNode pre = head;

            while(temp !=null)
                if(temp.val==val)
                    pre.next =temp.next;
                    return head;
                
                temp=temp.next;
                pre=pre.next;
            
            return head;
    

Day6:剑指 Offer 19. 正则表达式匹配

力扣链接:剑指 Offer 19. 正则表达式匹配

【五大算法思想】—》》动态规划三部曲,在做这道题之前需要了解到的,做算法之前必须要了解一些算法的思路以及解法,使用框架思维嵌套,久而久之就能熟悉算法的做法了。

动态规划:无非是利用历史记录来提高效率,避免重复计算

题目:请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。

题解:动态规划

end》》》
无人约束的生活,需要更自律才是真相!
温柔一点,自律一点,对自己好一点。

以上是关于剑指offer--Day6的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer--Day6

剑指offer(12)

剑指offer左旋转字符串,C+实现

剑指 Offer 58 - I. 翻转单词顺序

LeetCode34. 在排序数组中查找元素的第一个和最后一个位置

24剑指offer--二叉树中和为某一值的路径