从零开始的力扣刷题记录-第十天

剑指 Offer 18. 删除链表的节点-简单

题目描述:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
注意:此题对比原题有改动

题解:
基础题,没啥好说的

代码(Go):

func deleteNode(head *ListNode, val int) *ListNode {
    p := head
    if p.Val == val{
        return p.Next
    }
    for p.Next != nil{
        if p.Next.Val == val{
            p.Next = p.Next.Next
            break
        }
        p = p.Next
    }
    return head
}

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面-简单

题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

题解:
一看题目描述就想到了快速排序,只需要一次遍历就可以原地调整数组,可以实现最优解

代码(Go):

func exchange(nums []int) []int {
    l := len(nums)
    if l == 0{
        return nums
    }
    p,q := 0,l - 1
    temp := 0
    for p < q{
        if nums[p]%2 == 0{
            temp = nums[p]
            nums[p] = nums[q]
            nums[q] = temp
        }else{
            p++
        }
        if nums[q]%2 == 1{
            temp = nums[q]
            nums[q] = nums[p]
            nums[p] = temp
        }else{
            q--
        }
    }
    return nums
}

面试题 01.06. 字符串压缩-简单

题目描述:
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。

题解:
遍历一次字符串,用两个变量分别记录当前字符和出现次数。

代码(Go):

func compressString(S string) string {
    l := len(S)
    if l == 0{
        return S
    }
    str := ""
    flag := 0
    var temp byte 
    for i := 0;i < l;i++{
        if S[i] != temp{
            if flag != 0{
                str = str + strconv.FormatInt(int64(flag),10)
            }
            temp = S[i]
            str = str + string(S[i])
            flag = 1
        }else{
            flag++
        }
    }
    str = str + strconv.FormatInt(int64(flag),10)
    if len(str) >= l{
        return S
    }
    return str
}

344.反转字符串-简单

题目描述:
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

题解:
双指针遍历一遍数组,前面那道快排的的究极弱化版

代码(Go):

func reverseString(s []byte)  {
    l := len(s)
    p,q := 0,l - 1
    var temp byte
    for p < q{
        temp = s[p]
        s[p] = s[q]
        s[q]= temp
        p++
        q--
    }
    return
}

总结

简单题之间亦有差距,这两天都没什么难度,可能是前天太难了让我缓缓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值