Saturday, July 6, 2013

Partition lists@leetcode

刷题必备书籍Cracking the Coding Interview: 150 Programming Questions and Solutions 

简历:The Google Resume: How to Prepare for a Career and Land a Job at Apple, Microsoft, Google, or any Top Tech Company
算法学习书籍:Introduction to Algorithms
编程珠玑:Programming Pearls (2nd Edition)
C++ 学习:The C++ Programming Language, 4th Edition
经典操作系统书籍,龙书:Operating System Concepts
创业:The Start-up of You: Adapt to the Future, Invest in Yourself, and Transform Your Career
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal tox.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.
» Solve this problem

自己写的时候很多小问题,借鉴了别人的方法,逻辑设计比我简洁很多,而且也避免了判断head的情况,很值得学习,少定义了太多变量。

在改一个bug的时候有一个判断while(p->val<x&&p!=NULL) 改成了 while(p!=NULL&&p->val<x)就通过了。。这到底是为什么?内部是怎么实现的?会导致什么区别?

此题没啥太多算法,细心就行了。

2 comments:

  1. &&先从左边保证它不为NULL

    ReplyDelete
  2. &&是从左向右判断,所以要先判断是不是NULL。否则,可能访问一个NULL的val,会有run time error。 BTW, 我在刷LeetCode的时候经常会对照学姐你的code,你的思路总是很清晰,随我帮助很大。谢谢!

    ReplyDelete

Leetcode 316. Remove Duplicate Letters

 这道题表面问的是如何删除重复,实际在问如何从多个字符选取一个保留,从而让整个字符串按升序排列。那么策略就是对于高顺位的字符比如‘a',就要选靠前位置的保留,而低顺位字符如’z'则应该尽量选取靠后位置保留。 算法大概思路:每看到一个字符,我们要决定是否保留 1. ...