Remove Element

题目:

Given an array and a value, remove all instances of that value in place and return the new length.

The order of elements can be changed. It doesn't matter what you leave beyond the new length.

题意:从数组中去除某个值,返回新数组的长度;注意在去除完毕后数组中的元素应该变化了,即出现value的位置都被替换掉了,最后一句的意思是 新长度后面的元素值任意,也就是说,新数组的总长度可以保持不变,但是新长度之前的元素要正确,后面的无所谓。

思路:

设置下标i,j,i表示遍历数组的下标,j表示当前比较的元素下标。初始j=0,从i=0开始遍历数组。如果a[i]==value,不执行任何操作,进行下一次遍历。,直到找到一个a[i]不等于value,这时将将a[i]赋给a[j],然后j自加一。直到遍历结束,此时j的值就是新的数组长度

public class RemoveElement {
   static public int quchu(int[] a,int value){int i=0,j=0;for(i=0;i<a.length;i++){//遍历数组if(a[i]==value)//如果a[i]等于value,跳过继续执行continue;a[j]=a[i];//如果不相等,赋值给a[j]j++;//j表示数组中与value不相等的元素个数}return j;}public static void main(String[] args){int[] a={1,2,3,3,4,5,3,6,3,7,3};int length=0;length=quchu(a,3);System.out.println(length);}}

Remove Duplicates from Sorted Array

题目:

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array A = [1,1,2],

Your function should return length = 2, and A is now [1,2].

题意:

大意是将已排好序的数组中重复点删除,然后返回新数组的长度。数组中前n个数就是新的数组。唯一难点是不能用额外空间。
思路:
设置下标i,j,i表示遍历数组的下标,j表示当前比较的元素下标。初始j=0,从i=1开始遍历数组。如果a[i]==a[j],不执行任何操作,进行下一次遍历。,直到找到一个a[i]不等于a[j],这时将j加一,再将a[i]赋给a[j],把a[j]作为下一次比较的对象。直到遍历结束,此时j+1的值就是新的数组长度
public class RemoveDuplicatesfromSortedArray {public static int removeDuplicates(int A[]) {if(A.length == 0) {return 0;}int j = 0;/** 去重的数组A[0]不变,* 查看A[1]是不是等于A[0],若等于,则继续查看A[2]是否等于A[0],直到找到一个不相等的A[i]* 因为A[0]已被赋值,所以将A[i]的值赋给A[++j]* 将新找到的数组元素作为比较对象继续遍历数组,直到结束* 最后去重后的数组长度是j+1(A[0]-A[j]共j+1个)* */for(int i = 1; i < A.length; i++) {if(A[j] != A[i]) {j++;//下标加一A[j] = A[i];}}return j + 1;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint length=0;int[] a={1,2,3,3,4,5,5,6,6,7,8,8,9};length=removeDuplicates(a);System.out.println(length);}}

Remove Duplicates from Sorted Array II

题目:

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?

For example,
Given sorted array A = [1,1,1,2,2,3],

Your function should return length = 5, and A is now [1,1,2,2,3].

题意:

每个数只允许重复一次,输出去重后的数字个数,依旧上一题的要求,常数空间也就是只能在原数组上操作。

思路:设置下标i,j,i表示遍历数组的下标,j表示当前比较的元素下标。初始j=0,从i=1开始遍历数组。如果a[i]==a[j],执行num加1操作,。之后判断num是否小于2,如果小于,则j自加1并把a[i]赋值给a[j]。若大于等于2,则不执行任何操作。如果a[i]!=a[j],则j自加1并把a[i]赋值给a[j],同时将num清零,进行下一次遍历,a[j]作为下一次比较的对象。直到遍历结束,此时j+1的值就是新的数组长度。

public class RemoveDuplicatesfromSortedArrayII {public static int removeDuplicates(int A[]) {if(A.length == 0) {return 0;}int j = 0;int num=0;//重复次数/** 去重的数组A[0]不变,* 查看A[1]是不是等于A[0],若等于,num自加1,此时num=1,满足条件。继续查看A[2]是否等于A[0],若等于,则num=2,不满足                  *条件,之后所有重复的元素都被剔除。直到找到一个不相等的A[i]* 因为A[0]已被赋值,所以将A[i]的值赋给A[++j],这时将num清零,用于统计新的元素相等的个数* 将新找到的数组元素作为比较对象继续遍历数组,直到结束* 最后去重后的数组长度是j+1(A[0]-A[j]共j+1个)* */for(int i = 1; i < A.length; i++) {if(A[j]==A[i]) {num++;if(num<2) {j++;A[j]=A[i];}}else  {j++;//下标加一A[j] = A[i];num=0;//清零,用于统计下一个元素的重复数}}return j + 1;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint length=0;int[] a={1,2,3,3,3,4,5,5,5,6,6,6,7,8,8,9};length=removeDuplicates(a);System.out.println(length);}}

Plus One

题目:

  Given a non-negative number represented as an array of digits, plus one to the number. 
  The digits are stored such that the most significant digit is at the head of the list.

题意:

给定一个用数组表示的一个数,对它进行加一操作。 每一个数位都存储在数组的一个位置上。数组下标从大到小表示数位从低位到高位。

思路:

直接求解,设置一个进位标志carry,初值为1,表示加1,从最低位开始tmp = a[x] + carry, a[x] = tmp%10,carry = tmp/10,如果carry不为0对下一位再进行操作,直到所有的数位处理完或者carray为0就退出,如果最后还有carray不为0说明整个数组要扩展一个数位。

public class PlusOne {public static int[] mytets(int[] a) {int carry=1;//进位值,初始为1,表示加1操作int temp;int i;for(i=a.length-1;i>=0;i--) {temp=a[i]+carry;carry=temp/10;//向下一位的进位值a[i]=temp%10;//当前为的结果值if(carry==0) {//无进位则退出break;}}if(carry==1) {//分析最后产生的进位,例如999的特殊情况int[] result=new int[a.length+1];System.arraycopy(a, 0, result, 1, result.length-1);
            result[0]=carry;return result;}else {return a;}}public static void main(String[] args) {int []a= {9,9,9,9,9};int result[]=mytets(a);for (int i = 0; i <result.length; i++) {System.out.print(result[i]);}}}

转载于:https://www.cnblogs.com/kangsir/p/6653293.html

leetcode题目解答报告(1)相关推荐

  1. Github标星59.7k:用动画的形式呈现解LeetCode题目的思路

    前些日子推荐了一个仓库,把常见算法用python语言实现了(见文章),近日在github上发现另外一个59700多star的仓库,用动画的形式呈现解LeetCode题目的思路,非常值得推荐. 仓库说明 ...

  2. 推荐:用动画的形式呈现解LeetCode题目的思路(github上25000多star)

    前些日子推荐了一个仓库,把常见算法用python语言实现了(见文章),近日在github上发现另外一个25000多star的仓库,用动画的形式呈现解LeetCode题目的思路,非常值得推荐. 仓库说明 ...

  3. Leetcode题目练习总结(持续更新......)

    Leetcode题目练习 数组 1.两数之和 26. 删除排序数组中的重复项 27. 移除元素 35.搜索插入位置 53.最大子序列 66.加一 88.合并两个有序数组 118.杨辉三角 119.杨辉 ...

  4. LeetCode题目——二叉树篇

    LeetCode题目--二叉树篇 前言 一.二叉树的前.中.后序遍历 1.前序遍历 递归实现 迭代法 2.中序遍历 递归 迭代法 3.后序遍历 递归 迭代 二.二叉树的层次遍历 三.二叉树的右视图 四 ...

  5. ​“手把手撕LeetCode题目,扒各种算法套路的裤子”

    出品 | AI科技大本营(ID:rgznai100) 刷LeetCode刷到懵还是一头雾水? 莫慌,这里有一个标星27000+的算法详解教程. 从项目命名来看,作者labuladong就有着要干翻算法 ...

  6. Leetcode题目:House Robber II

    题目: Note: This is an extension of House Robber. After robbing those houses on that street, the thief ...

  7. HDU 3826 Squarefree number:题目解答源码

    2019独角兽企业重金招聘Python工程师标准>>> HDU 3826 Squarefree number:题目解答源码 In mathematics,a squarefree n ...

  8. Leetcode题目:Best Time to Buy and Sell Stock

    题目:Say you have an array for which the ith element is the price of a given stock on day i. If you we ...

  9. Leetcode题目:Balanced Binary Tree

    题目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bin ...

最新文章

  1. 游戏AI之初步介绍(0)
  2. 机器学习陷入困境,谷歌大脑专家发文吐槽 AI 工程现状
  3. wiredtiger存储引擎介绍——本质就是LSM,当然里面也可以包含btree和列存储
  4. 分区脚本(fdisk)
  5. 谈谈mysql优化_浅谈MySQL SQL优化
  6. oracle复制sequence,oracle sequence语句重置方介绍
  7. ajax 12301 原因小结
  8. leetcode96. 不同的二叉搜索树
  9. 【干货】企业如何进行数字化转型及如何称为数据驱动型企业?
  10. 你不知道的三大 JavaScript “黑话”!
  11. 树莓派3B的WiFi中文乱码及搜索不到附近的WiFi_解决方案:
  12. python-学生管理系统--1框架部分内容以及代码
  13. 中文拼音排序的两种方法
  14. 送书 | 图解机器学习—算法原理与Python语言实现
  15. 中控考勤机Java二次开发(附Demo)
  16. 【转载】外设使用Tips之MSCAN接收ID滤波器设置
  17. 计算机图形学-走样与反走样
  18. BurpSuite IP代理扩展(IPRotate_Burp_Extension)每次请求切换IP
  19. rk3568 | 瑞芯微平台GPIO引脚驱动编写
  20. Qt: QXMLStreamReader,读XML文件实例

热门文章

  1. 国家队基金押注,国内商用车ADAS龙头进军乘用市场
  2. 苹果M1芯片升级果然很炸场:性能暴涨功耗速降!但最香新品竟是无降噪AirPods 3...
  3. 英特尔用ViT做密集预测效果超越卷积,性能提高28%,mIoU直达SOTA|在线可玩
  4. 14岁上大学,29岁拿下教职,如今这位华裔学者拿下Jeffrey Elman大奖
  5. 华为自研搜索引擎曝光:「花瓣」虽小,但要替代谷歌
  6. 国产最大AI开源框架再升级:一口气发布9大新产品,顺便送出亿元GPU算力
  7. 微软日本每周只上四天班,销售额提升39.9%!网友:老板快来看啊
  8. Kubernetes删除一直处于Terminating状态的namespace
  9. 20165302第八周总结
  10. 监控haproxy的脚本