
剑指Offer
Jae_Wang
~
展开
-
剑指offer 二维数组中的查找
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:矩阵是有序的,左下,向右依次递增, 1. 可以从右上角开始找,只要小于,那么这一列都不满足。 2. 每一行都是递增的,那么显然可以用二分查找,(优化:只要target< a...原创 2018-05-13 19:18:30 · 175 阅读 · 0 评论 -
剑指offfer 替换字符串空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路: 常见的从后往前开始复制和替换,public class Solution { public String replaceSpace(StringBuffer str) { int count = 0;...原创 2018-05-13 22:10:21 · 203 阅读 · 0 评论 -
剑指offfer 从尾到头打印链表
题目:输入一个链表的头结点,从尾到头打印每个节点的值。思路:是否可以修改输入的数据,当然用栈就能反过来输出public class Solution{ //栈 public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList list = new Array...原创 2018-05-15 14:35:01 · 193 阅读 · 0 评论 -
剑指offer O(1) 删除链表的节点(案例全通过)~~~~
题目:在O(1)时间内删除链表节点。思路:一般删除的做法是要找到删除该节点的前一个点,所以要遍历一遍,复杂度为O(n),但并不是一定要得到前一个点,可以把删除的后一个点j复制到该节点i,然后i指向j的下一个节点。需要考虑两点:当删除位于链尾,此时就得遍历,总的平均时间复杂度就是[(n-1)*1+O(n)]/n,结果还是O(1)。;如果链表只有一个节点,删除后设为null。(传参看完再修改)publ...原创 2018-05-15 16:10:57 · 174 阅读 · 0 评论 -
剑指offer 删除链表中重复的结点~~~~
题目:在一个排序的链表中,存在重复的结点,删除重复的且不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:一般都是设置一个先前的结点,因为第一个也可能是重复的。public class Solution{ public static void main(String[] args) { ...原创 2018-05-15 16:24:31 · 451 阅读 · 0 评论 -
剑指offer 链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第k个结点思路:主要考虑 1. head为空 2.链表长度小于k 3.k=0 无符号减1会变成4294967295(Java有没有?)public class Solution { //两个指针,一前一后 public ListNode FindKthToTail(ListNode head,int k) { ...原创 2018-05-16 12:13:49 · 726 阅读 · 0 评论 -
剑指offer 数组中的逆序对
题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 输入一个数组,并求出这个数组中的逆序对的总数P,并将P对1000000007取模输出、输入描述:保证数组中没有相同的数字,size <= 2*10^5输入:1,2,3,4,5,6,7,0 输出:7思路: 1. 显然全部遍历一遍是可以求出来,时间复杂度为O(n^2) 2...原创 2018-05-30 16:35:45 · 255 阅读 · 0 评论