编辑器不好用,接上一篇完成今日任务

(3)Remove Duplicates from Sorted Array

最优解代码如下:【注意最标准的代码风格!!!】

 1 public class Solution {
 2     public int removeDuplicates(int[] nums) {
 3         if (nums == null || nums.length ==  0) {
 4             return 0;
 5         }
 6
 7         int index = 0;
 8         for (int i = 0; i < nums.length; i++) {
 9             if (nums[i] != nums[index]) {
10                 nums[++index] = nums[i];
11             }
12         }
13         return index + 1;
14
15     }
16 }

解题思路:使用index记住第一个元素的位置,后面元素依次跟它比较,不相同的时候将不相同的元素赋给index+1的位置,然后后面元素继续跟index+1比较。。。这样index的值加1就是返回不相同元素数组的长度。

(4)Merge Sorted Array

 1 public class Solution {
 2     public void merge(int[] nums1, int m, int[] nums2, int n) {
 3        int i = m-1, j = n-1, index = m + n - 1;
 4        while (i >= 0 && j >= 0) {
 5            if (nums1[i] > nums2[j]) {
 6                nums1[index--] = nums1[i--];
 7            }
 8            else {
 9                nums1[index--] = nums2[j--];
10            }
11        }
12        while (i >= 0) {
13            nums1[index--] = nums1[i--];
14        }
15        while (j >= 0) {
16            nums1[index--] = nums2[j--];
17        }
18     }
19 }

解题思路:从nums1数组的最高位即 m+n位依次向下添加元素。index是合并后数组的位置。两个数组的最高位开始比较,哪个数值大就哪个放在index位,然后index减1直到其中一个数组放完,另一个数组余下的一次放好就OK。

时间: 2024-12-20 09:26:09

编辑器不好用,接上一篇完成今日任务的相关文章

linux lvs集群nat模式(比上一篇的lvs nat实用)

这是一篇以apcache服务为例介绍lvs的nat模式配合keepalived实现的方案.实验拓扑图如下所示,虚线上面的大图可以看成是虚线下面"服务器群"的放大版: 本实验共用到4台linux虚拟服务器,其中两台rhel5.6作为主从HA(keepalived)服务器,另外两台rhel4.6模拟Apache服务器--用两台Apache服务器模拟多台Apache服务器. 实验原理是,用Apache服务器为代表模拟实际用到的服务器,用两台Apache模拟多台Apache,所有的Apache

接上一篇中记录Echarts进度环使用【不同状态不同进度环颜色及圈内文字】--采用单实例业务进行说明

接上一篇中记录Echarts进度环使用 此处处理不同状态下不同进度环颜色及圈内文字等的相关处理,采用实际案例源码说明 -----------------偶是华丽丽分割线--------------------------------------------------- 业务上此处拿一个有期限任务实例举例说明 业务简要说明: [任务按时间 可分为 未开始--进行中--已结束 3大状态//其中已开始任务中任务状态又需要根据完成情况(提交与否)显示对应圈内文字] 核心地方如图已标出 接下来我们可以自

续写上一篇的数组or指针操作

C语言,同样适用if else while 这样的语法,但不同的人,就是有不同的实现方式,甚至是技巧. eg: 1 #include <stdio.h> 2 #include<string.h> 3 typedef _Bool bool; 4 #define true 1 5 #define false 0 6 #define N 10 7 bool identity_matrix(int matrix[][N]) 8 { 9 int row, column; 10 for (ro

关于上一篇鼠标移到按钮时的“按下”效果的三种方法

上一篇博文中,关于按钮按下的效果回过头研究了下,总结了如下三种方法,只写出关键样式: 1.相对定位 1 input.button{ 2 3 position:relative; //用相对定位 4 } 5 6 input.button:hover{ 7 top:2px;//鼠标移动到此top增加2px 8 } 2.主要利用外边距这个属性,鼠标移动到按钮位置时,按钮上外边距增加2px,下外边距减少2px(相当于走出去2px又退回来2px),就可以达到按下效果,如果只是单独写margin-top:2

Android volley 解析(三)之文件上传篇

前面我们讲了如何通过 volley 实现表单的提交,而这篇文章跟上一篇衔接很大,如果没有看上一篇 blog 的朋友,建议先去看看 Android Volley解析(二)之表单提交篇 因为文件上传实质就是表单的提交,只不过它提交的数据包含文件类型,接下来还是按照表单提交的套路来分析. 数据格式 这里我们通过图片上传的案例来分析,其他文件也是同样的实现方式:以下是我在传图网传图时,上传的数据格式,先来分析一下 POST http://chuantu.biz/upload.php HTTP/1.1 H

HQL实现新闻上一篇下一篇

要实现新闻的上一篇下一篇功能,关键是HQL语句 上一篇:HQL="from News d where d.id<? order by id desc"; 下一篇:HQL="from News d where d.id>? order by id asc "; daoImpl实现的方法: public News nextPage(News news){ try{ String queryString="from News d where d.id

VS2010/VS2013项目创建及通过ADO.NET连接mysql/sql server步骤(VS2013连接成功步骤见上一篇随笔)

本随笔主要是对初学者通过ADO.NET连接数据库的步骤(刚开始我也诸多不顺,所以总结下,让初学者熟悉步骤) 1.打开VS新建一个项目(这里的VS版本不限,建项目都是一样的步骤) VS2010版本如图: VS2013版本如图: 2.非空项目创建后,右侧“解决方案管理器”中会有一个“models”文件,右键“models”,具体步骤如下: 2-1步骤 2-2步骤 2-3步骤 2-3-1  注意这个是VS2010版本的截图 2-4步骤 2-5步骤 2-6步骤 2-7步骤 2-8步骤 2-10步骤 2-

phpcms V9实现wap上一篇、下一篇功能

在phpcms\modules\wap\index.php里面,搜索上面这句 if(!$r || $r['status'] != 99) showmessage(L('info_does_not_exists'),'blank'); 找到后,在它的下一行添加上 //上一页 $previous_page = $this->db->get_one("`catid` = '$catid' AND `id`<'$id' AND `status`=99",'*','id DES

完善ext.grid.panel中的查询功能(紧接上一篇)

今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这样虽然实现了,但是多写了不少代码,之后网上找到了方法. 代码如下:请结合昨天的代码看,否则你是看不明白的 /*我们操作查询的功能键是放在grid的tabbar中的,下面就是创建的grid的tabbar,其中查询操作就在其中,此代码紧接上一篇文章,这个类上一篇文章中也有,但是没有实现查询功能,红色字体