剑指offer~编程小哥令狐

一、数组类~

03、数组中重复的数字

class Solution{public void swap(int[] nums,int i,int j){int temp=nums[i];nums[i]=nums[j];nums[j]=temp;}public int findRepeatNumber(int[] nums) {int n=nums.length;for(int num:nums)if(num<0||num>=n)return -1;for(int i=0;i<n;i++){while(nums[i]!=i&&nums[i]!=nums[nums[i]])swap(nums,i,nums[i]);if(nums[i]!=i&&nums[i]==nums[nums[i]])return nums[i];}return -1;}
}

04、二维数组中的查找

  • 暴力查找
class Solution {public boolean findNumberIn2DArray(int[][] matrix, int target) {int i,j;if((matrix==null||matrix.length==0)||(matrix.length==1&&matrix[0].length==0))return false;for (i=0;i<matrix.length;i++)for (j=0;j<matrix[0].length;j++)if(matrix[i][j]==target)return true;return false;}
}
  • 线性查找
class Solution {public boolean findNumberIn2DArray(int[][] matrix, int target) {if((matrix==null||matrix.length==0)||(matrix.length==1&&matrix[0].length==0))return false;int i=0,j=matrix[0].length-1;while(i<=matrix.length-1&&j>=0){if(target==matrix[i][j]) return true;if(target>matrix[i][j]) i++;else if(target<matrix[i][j]) j--;}return false;}
}

05、顺时针打印矩阵

class Solution {public int[] spiralOrder(int[][] matrix) {//判断边界if(matrix.length==0)return new int[0];//因为返回值是数组,所以实例化一个数组进行返回//右下左上int left=0,right=matrix[0].length-1,up=0,down=matrix.length-1;int num=0;int []res=new int[(right+1)*(down+1)];while(true){//右for(int i=left;i<=right;i++)res[num++]=matrix[up][i];if(++up>down) break;///判断边界//下for(int i=up;i<=down;i++)res[num++]=matrix[i][right];if(--right<left) break;//左for(int i=right;i>=left;i--)res[num++]=matrix[down][i];if(--down<up) break;//上for(int i=down;i>=up;i--)res[num++]=matrix[i][left];if(++left>right) break;}return res;}
}

06、在排序数组中查找数字

  • 暴力查找法
class Solution {public int search(int[] nums, int target) {int res=0;for(int i=0;i<nums.length;i++)if(nums[i]==target)res++;return res;}
}
  • 二分查找法【有序数组优先考虑二分查找】
class Solution {public int search(int[] nums, int target) {int left = 0, right = nums.length;int ans = 0;while (left < right){int mid = left + ((right - left)/2);if (nums[mid] >= target){right = mid;} else {left = mid + 1;}}while (left < nums.length && nums[left++] == target){ans++;}return ans;}
}

07、剑指 Offer 53 - II. 0~n-1中缺失的数字

class Solution {public int missingNumber(int[] nums) {int left = 0, right = nums.length;while(left < right){int mid = left + (right - left) / 2;if (nums[mid] == mid) {left = mid + 1;} else {right = mid;}  }return left;}
}

二、链表类~

06、从尾到头打印链表

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public int[] reversePrint(ListNode head) {ListNode temp=head;int size=0;while(temp!=null){size++;temp=temp.next;}int[] res=new int[size];temp=head;for(int i=size-1;i>=0;i--){res[i]=temp.val;temp=temp.next;}return res;}
}

07、删除链表节点

/*** 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.val==val) return head.next;ListNode pre=head;ListNode cur=head.next;while(cur.val!=val&&cur!=null){pre=cur;cur=cur.next;}if(cur.val==val){pre.next=cur.next;}return head;}
}

【剑指offer】编程习题集附上答案相关推荐

  1. 牛客网剑指offer编程实践1-10题

    牛客网剑指offer编程实践1-10题 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...

  2. 剑指offer编程题(JAVA实现)——第35题:数组中的逆序对

    github https://github.com/JasonZhangCauc/JZOffer 剑指offer编程题(JAVA实现)--第35题:数组中的逆序对 题目描述 在数组中的两个数字,如果前 ...

  3. 剑指offer编程题(JAVA实现)——第38题:二叉树的深度

    github https://github.com/JasonZhangCauc/JZOffer 剑指offer编程题(JAVA实现)--第38题:二叉树的深度 题目描述 输入一棵二叉树,求该树的深度 ...

  4. 2020-8-26 剑指offer编程小哥令狐 075211

    剑指offer~编程小哥令狐 一.数组类~ 03.数组中重复的数字 class Solution{public void swap(int[] nums,int i,int j){int temp=n ...

  5. 剑指 offer 题目分析及答案

    1. 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到头打印链表 7. 重建二叉树 8. 二叉树的下一个结点 9. 用两个栈实现队列 ...

  6. 剑指Offer——编程题的Java实现(更新完毕……)

    目录 二维数组中的查找 替换空格 从尾到头打印链表 重建二叉树 用两个栈实现队列 用两个队列实现一个栈 旋转数组的最小数字 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 二进制中1的个数 数值的整数次方 ...

  7. 三天刷完《剑指OFFER编程题》--Java版本实现(第三天)

    正在更新中......... 剑指offer --Python版本的实现: 剑指offer(1/3)第一大部分 剑指offer(2/3)第二大部分 剑指offer(3/3)第三大部分 -------- ...

  8. 剑指Offer——编程题的Java实现

    声明:我写这个的意图是我在看书的过程中,就我掌握的内容做一个笔记,没有抄袭的意图.再次说明一下,我找工作的过程中并不顺利,没有像那些牛人们拿到一大把的Offer,我只是希望通过我自己的努力,不断提高自 ...

  9. 剑指 offer 编程题 C++ 版总结(中)

    解题思路:从根结点开始向下进行对比,(1) 若两边的结点为空,返回 true.(2) 一个结点为空,而另一个结点不为空,此时二叉树不是对称的,返回 false.(3) 两边结点都不为空,但是结点的值不 ...

最新文章

  1. 解读Java Class文件格式
  2. uniapp中使用picker_uniapp 使用个推推送系统消息
  3. python中requests的常用方法_Python爬虫简介(2)——请求库的常用方法及使用,python,入门,二,requests,常见,和,库中,文官,网...
  4. rss spring 接口_spring 接口支持返回多种格式
  5. Typora主题定制及常用配置的设置方法
  6. 2017 Multi-University Training Contest - Team 6—HDU6098HDU6106HDU6103
  7. Spring boot 通过ApplicationRunner在启动完成后按指定顺序执行任务
  8. 自定义video控制栏,移动端可行
  9. OPERA固定价格学习
  10. Android模仿超级课表,展示多门课程重叠,页面有折角背景
  11. JavaSwing_2.2: JButton(按钮)
  12. 于的繁体字有几种写法_于字书法繁体字怎么写
  13. 表贴电阻尺寸与什么有关_贴片电阻简介:功率大小与尺寸对应表
  14. docker 暴露端口 查看_Docker容器如何暴露端口
  15. MATLAB NAR时间序列神经网络两种预测方法
  16. 跨平台APP----对Cordova,APPCan,DCloud,APICloud四大平台的分析(系列二)
  17. 华为RH2288做raid方法
  18. 百融云创被传赴港IPO急辟谣 旗下信贷业务存众多质疑
  19. 【Leetcode】431. Encode N-ary Tree to Binary Tree(困难)
  20. 【修炼七】团队建设-尊重

热门文章

  1. 使用Spock框架进行单元测试
  2. 在Spring Security中启用Group Authorities
  3. 基于Tensorflow卷积神经网络(CNN)的人脸年龄和性别检测系统
  4. Android 数据存储(一)-文件存储
  5. 微信小程序获取经纬度有偏差的解决方案,
  6. Android MVVM实现
  7. python appium api_appium api文档
  8. 香港8大A-level成绩要求汇总
  9. Battery Life检测
  10. Mybatis 系列 0:初恋Mybatis