1.Algorithm
Question:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have *exactly* one solution, and you may not use the same element twice.
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
My Solution in C#:
public class Solution {
public int[] TwoSum(int[] nums, int target)
{
int[] returnArr=new int[2];
for(int i=0;i<nums.Length-1;i++)
{
for(int j=i+1;j<nums.Length ;j++)
{
if((nums[i]+nums[j])==target)
{
returnArr[0]=i;
returnArr[1]=j;
return returnArr ;
}
}
}
return returnArr;
}
}
2.Review
X-Y Problem对我来说这是一个非常容易犯的错误,经常和别人聊天的时候Get不到别人的重点。在工作中我也在积极的避免类似的错误,比如在请教别人问题的时候我会说明我这个问题的场景,以及我自己的思路。说明问题的场景是为了让对方能了解本次请教的目的是真正要解决什么问题,说明我的思路是当然是为了得到对方的肯定或者指正。
你试图做X,并想到了用Y方案。所以你去问别人Y,但根本不提X。于是,你可以会错过本来可能有更好更适合的方案,除非你告诉大家X是什么。
— from Re: How do I keep the command line from eating the backslashes? by revdiablo
您可以同时阅读耗子叔在coolshell上的这篇文章X-Y PROBLEM
3.Tip
ORACLE中查询及删除重复记录的SQL语句
1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断
select * from T where Id in (select Id from T group byId having count(Id) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录
DELETE from T WHERE (id) IN ( SELECT id FROM T GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM T GROUP BY id HAVING COUNT(*) > 1);
似乎也可以这样做
1.先备份这个表
create table Table1 as
select distinct * from Table2
2.然后将Table2中数据删除,再重新插入数据
delete from Table2
insert into Table2
select * from Table1
drop from table1
4.Share
作为一名C#程序员,工作中当然用的是微软全家桶。技术栈是微软.Net,开发工作是VS,服务器是IIS,电脑也是WIndows系统。个人觉得使用.Net几个好处:
- VS编辑器做的非常好,团队开发,编译,调试,项目管理等等都很不错。
- C#语法糖要比JAVA好,比如C#中的属性 {get;set;},隐式类型Var
- 开发效率高,使用现成的框架,比如开发.Net网站,基本拖把拖把就可以了。
当然特别特别让我瞬间对微软“”深恶痛绝”是:
- 我没办法查看一个方法的具体实现,可能出于利益的关系.Net运行时不开源,不像Java一样可以看到JDK的代码,这样我们从代码里面就可以学到很多
这就感觉作为一名.Net程序员似乎只是会用微软的API,不能接触到更底层的实现。
那微软技术栈还可以选择吗?
- 从工作的角度来说是可以选择的,C#相对来说简单,对于想从事软件开发工作的同志来说用C#来入门是不错的选择。
- 从技术的角度可以阅读以下这两篇文章
《8个原因让我选择微软技术栈》作者罗列了8条使用微软技术栈的原因
《.Net Core-走向疯狂和开源》.Net Core作为微软跨平台的开发框架从微软的宣传上来说是值得期待的,另外有个好消息北京时间2019.9.24 就将正式发布.NET Core 3.0,
- 从生态方面,当前还是Java生态做好,从招聘信息就能看出来Java程序员的需求量远高于C#程序员,同时各大公司也都用的Java技术栈,.Net Core要想逆袭也不是一件容易的事情。
总的来说各大公司开源各类的框架是好事,可以让软件开发人员有更多的选择,在工作中可以选择效率更好的开发框架,也可以在开源代码中学到更多。